昨日からDelphi始めてみました。 タイプすると音が出るメモ帳作っています。 音はとりあえずしっかり出るのですが、日本語入力ONにするとだめなようです。 日本語入力ONにしたときのKeyの取得方法はどうしたらいいのでしょうか。 現在の仕様 エディタのOnKeyPressイベントから飛ばして、 if Key = chr(VK_RETURN) then begin Mediaplayer1.Rewind; Mediaplayer1.Play; end else begin Mediaplayer2.Rewind; Mediaplayer2.Play; end; てな感じになってます。 Enterキーとその他のキーで鳴る音を分けています。 わかる方ご教授お願いします。
>>367 無理と言っておこう。
IME上で未確定の間は、アプリケーションではなく
IMEのプロセスにキーボードメッセージを横取りされている状態なので。
アプリケーション上で如何なるイベントを処理をしようともIME上の入力を感知することはできない。
ちなみにOnKeyPressはIMEの入力を確定した時点で発生する。
例外としてフックなどのAPIを使用すればIMEの入力メッセージを
さらに横取りして擬似的にイベントを発生させることもできるが、
APIの知識がないと極めて危険な技。
何で無理やねんw しかもフック無用
>>368 レスありがとうございます。
IMEから奪わないといけないんですね
APIが使いにくいと思い、でもDelphiならAPI使わなくても
それなりに作れそうだと思って始めたのですが、
いきなりひっかかってしまいましたか
やはりWinで何か作ろうと思ったらAPIの知識が必要になってきますね…
とりあえず、他の物いろいろ作って修行してまいります
Delphiの限界が垣間見えました
初心者スレに貼り付いてる粘着。
373 :
デフォルトの名無しさん :03/07/31 01:17
Delphiで3Dグラフィックスを表示させたいのですが OpenGLやDirectXを使えるようにするにはどうすればよいでしょうか チュートリアル的なサイトを教えていただければ幸いです ゲ製作をみてQuadrupleD3.00というものを使ってみましたが 不具合が多くドキュメントに不備がありコミュニティが停止状態なので 使い物にならないと判断しました DelphiXも同じような理由ではずしました サンプルやドキュメントに不具合が少なくDelphi6Personalで使いやすいものは何かありませんか? ドキュメント類は日本語か英語でお願いします ロシア語でいいサイトをみつけたのですがソースが化けてしまって(それ以前に読めませんが)修正が大変だったので(TT
>>373 DirectX SDK落とせばCとVBでサンプルソースがあるから、それ見てこつこつと
やってくしかない。あとヘルプも同梱されてるから一緒に見てね。
>>374-376 即レスありがとうございます
VC++のやり方がほぼそのまま使えるということで助かります
ライセンスもMPLということで扱い易いです
贅沢いうのもなんですがチュートリアルかサンプルはないでしょうか
VCからのコンバート中なんですがもし先人がやっていれば楽したいなと思いまして
とりあえずコンパイルできるところまでいくのに時間かかりそうなものですいません
>>377 だからVCとかのチュートリアルそのまま写すだけだって・・・
ウィンドウはFormが勝手に作ってくれるんだから後は簡単でしょ?
>>375 にヒントは書いたんだし
ちなみにあまりに簡単なことなので誰も今更Webで説明したりはしないと思うよ
>>377 VCLでの作法が分からなければ、SDKのようにAPIで組めばいい。
とりあえず、概念を理解するまでサンプル組んでみろ
>>367 Application.OnMessage で VK_PROCESSKEY をつかまえて
ImmGetVirtualKey API を使い仮想キーコードを取得する。
どうした?>> 382
>>356 >>359 どうもありがとうございました。
この方法(を少しアレンジして)で、うまくいきました。
今後ともよろ
386 :
デフォルトの名無しさん :03/07/31 18:19
TCustomListBox.TopIndexがイマイチよくわかりません。 ヘルプの例を実行したのですけど、項目が入れ替わらないのですけど、どうして なのでしょうか? Delphi6のヘルプの例 以下の例では,リストボックス,ボタン,編集ボックスを使用します。 アプリケーションを実行してボタンをクリックすると,リスト内の 3 番目 の項目が最初の項目になり,その項目のインデックス値が編集ボックスに 表示されます。この場合,インデックス値は 2 になります(最初の項目の インデックス値は 0)。 procedure TForm1.FormCreate(Sender: TObject); var Number: Integer; begin for Number := 1 to 20 do ListBox1.Items.Add('Item ' + IntToStr(Number)); end; procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.TopIndex := 2; Edit1.Text := IntToStr(ListBox1.TopIndex); end;
> 項目が入れ替わらないのですけど (必要なら)スクロールして、一番上に表示されるだけだよ。
項目を入れ替えるプログラムに見えないような気がする
389 :
デフォルトの名無しさん :03/07/31 18:45
delphi api specialfolder path delphi file move
392 :
デフォルトの名無しさん :03/07/31 20:16
>>387 実行して意味がわかりました。
スクロールの表示位置でした。
393 :
デフォルトの名無しさん :03/07/31 20:44
TImageコンポーネントに表示した画像をグレースケールに変換する 方法を教えて頂けませんでしょうか?
でるふぃって読むのですか?
φって変換できてるのにね
397 :
デフォルトの名無しさん :03/07/31 21:47
最小化不可にしているんだけど、 QuickLaunchに入っているデスクトップ(ToggleDesktop)に最小化されてしまう。 そもそもコレはどんな動作して最小化にやってくるのか、 どうやって妨げてやろうか、APIで利用できないものか、 教えてもらえたら大人になれるんだがな。
>>398 メッセージ処理を覚えると吉と言ってみる。
400 :
デフォルトの名無しさん :03/07/31 22:06
速いな。 メーセージ処理どころか、フックまでして妨害してるがことごとく失敗。
402 :
デフォルトの名無しさん :03/07/31 22:13
>>401 強敵と戦っているんですね。がんばってくださいね。
大人になるための戦いだからな。 おまえもがんばれよ。
404 :
デフォルトの名無しさん :03/08/01 01:16
>不具合が多くドキュメントに不備がありコミュニティが停止状態なので >使い物にならないと判断しました >DelphiXも同じような理由ではずしました 自分で作れもしないくせに、偉い言われようだなぁ…。
だなぁ。 ミニゲーム程度なら簡単に作れるだろうに。 >とりあえずコンパイルできるところまでいくのに時間かかりそうなものですいません とか言ってる人には無理だろうけど…。
>>398 >最小化不可にしているんだけど、
>QuickLaunchに入っているデスクトップ(ToggleDesktop)に最小化されてしまう。
システム解析の定石として最小化されないアプリケーションが実在するかどうかを
調べてみては?
> QuickLaunchに入っているデスクトップ(ToggleDesktop)に最小化されてしまう。 これってどういう意味なの? QuickLaunchのデスクトップって、デスクトップにあるアイコンを表示しているだけだと思うけど。
>>407 だから「デスクトップにあるアイコンを表示しているだけ」を抑制したいんだろ?
PCJapanをみてきました DelphiでつくられたNASAの科学技術情報システムってどんなものですか?
410 :
デフォルトの名無しさん :03/08/01 09:47
IndyのIdHTTPServerのgetやpostのイベントハンドラはマルチスレッドで動いてるんだろうか。 それとも、イベントハンドラが複数動作するので、シングルスレッドで問題無いわけかな。 詳しい方教えて下さい。
マウスのプロパティで設定されている ホイールのスクロール量を取得する方法を教えて頂けませんでしょうか?
412 :
デフォルトの名無しさん :03/08/01 10:17
普通のアプリはToggleDesktopで最小化から復帰するときアニメーションが起こる。 HCBT_MINMAXをブロックしちゃったアプリはこのアニメーションがないようだ。 WS_VISIBLEを含み、WS_MINIMIZEDを含まないのに見えない状態だ。 タスクバーを右クリックしたら、メニューと同時にフォームが表示された。 以上のような状況から、最小化できないフォームは、 デスクトップWindowの背面に持っていかれてるような挙動を予想し、 SWP_TOPMOSTを使ってみた。 ついにやったぞ、初勝利だ。 これで次の目標は、任意のフォームをデスクトップWindowの後ろに持っていくことになった。
>>410 タスクマネージャ見て調べてください。
プロセスタブを表示して、
メニューから「表示→列の選択→スレッドの数」にチェックを入れる
>>411 Controls.Mouse.WheelScrollLines
416 :
デフォルトの名無しさん :03/08/01 11:48
>>410 IndyのIdHTTPServer はマルチスレッドで動いています。
OnCommandGet イベントなどは第一引数に、そのセッションに関連付けられたスレッドの
ID を持ちます。必要であればこれを使ってセッションを分離することができます。
thanx!
>>417 OnCommandGetを追ってみたら、
>function TIdHTTPServer.DoExecute(AThread: TIdPeerThread): boolean;
って感じで素直にスレッドになってますね。
スレッドIDでセッションを分離、、、何か出来るわけですね。
(セッションを分離すると何が良いのか知りたいです)
アメリカではNASAだけじゃなくて、いろいろな研究機関で使用されているよ
>>414 ヴァカ丸だし全開ですね!(ワンダフルゲラ
再び初心者質問ですが、 TIdHTTPServerで、getメソッドのパラメタに改行コードが入ってるとパラメタのパースに失敗します。 入れちゃ駄目なのかな。どうしよう。
ファイルからの読み込みデータのパース失敗なので、EOFコードが入ってるかも。 EOFコードが終端を意味するのかな?
424 :
デフォルトの名無しさん :03/08/01 13:50
TPanelを含めて、TPanelに乗っている全てのコントロールを 半透明にする事は出来ますか?
425 :
デフォルトの名無しさん :03/08/01 14:19
Delphiのクラスか関数で、エスケープ文字を使った文字列変換ありますか?
TPanelの載っているフォームを半透明にすれば、TPanelを含めて、TPanelに乗っている全てのコントロールを半透明にする事はできる
>>422-423 getメソッドのパラメーターって何?
パースに失敗するってどの様に?
ファイルからの読込みってどのファイル?
質問内容が理解できません
>>426 レスありがとうございます。
フォーム全体ではなくPanelのみを半透明にしたいのです。
429 :
デフォルトの名無しさん :03/08/01 14:57
StringGridでセルがクリックされた時に色を付けたいのですが、 どうすれば出来ますか?
SetLayeredWindowAttributesを使った方法では、 現状ではコントロールを半透明にするのは無理。
Delphiの限界が垣間見えました
432 :
デフォルトの名無しさん :03/08/01 15:31
半透明にしたタイトルバーなしフォームをフォームに貼り付けろ
>getメソッドのパラメーターって何? server側の?A=A&B=...という感じのパラメタです。 >パースに失敗するってどの様に? server側のRequestInfo->Params->Textが空になります。 で、HTTPEncodeすると、何とか動作するようになりました。 HTTPEncode時に、「=」もエンコードすべきなのか、対象外にするのか、仕様はどうなんでしょ... ググルとかでは、「=」はそのまま見えてますが、HTTPEncodeすると「%3」になりますね。
分かりました。 「&」なんかは、特殊な意味があるので、ASCIIではないのに、特別にエンコードしないことが許されてるみたいですね。 で、次に分からないのですが、IdHTTPServerで関係無いHTTPパスを指定された場合、「204 - No Content」エラーとすべきか、処理せずに次のアプリケーションサーバに制御を渡す(出来なさそう)のか...
437 :
デフォルトの名無しさん :03/08/01 18:19
クイックレポートをDelphi7に入れたいのですが、どこかに落ちていませんか?
438 :
デフォルトの名無しさん :03/08/01 18:21
Win32MajorVersionやWin32MinorVersionといった変数があるなら、HELPに載せておいてよ。 Professionalなら載っているかもしれないけどさ。 Personalだと、他にも使えるのにHELPに載っていない変数や関数があるのかな?
作ったゲームを画面全体(タイトルの入ったバー?も無しで)に表示するにはどうすればいいですか?
BorderStyle := bsNone; BoundsRect := Rect(0, 0, Screen.Width, Screen.Height);
>>441 どこに貼り付ければいいんですか?
自分なりに考えてやってみましたが、エラーが起きまくりです。
Drag and Drop について質問 TListBox や TTreeView, TListView 等のコンテナの中にアイテムがあるような コントロールのアイテムをドラッグした時にそのドラッグしているアイテムを 確定する方法で悩んでいます。例えば、TTreeView のアイテムをドラッグすると、 DragOver が発生しますがパラメータに入ってくる Source は常にその コンテナコントロールで、アイテム自体ではないようです じゃぁ、Selected を見ればいいんじゃないか?と、思いましたが複数選択した場合 どうしたものか…う〜ん、みなさんはどうやってますか? あと、DropTarget なるプロパティがありますが、これはドラッグアンドドロップ 操作が終了した時点で設定されるものですか?
複数選択されてたって、ListBoxのSelectedはインデックスで項目ごとの選択状態調べられるし、 ListViewはListItemの、TreeViewはTreeNodeのSelectedを調べればいいだろ。
質問したいことあるんですが、ここで解答している人って乱暴な言葉使いしかできないんですか? それとも、ここは隔離スレですか?
気にする奴は質問すんなハゲ
夏まっさかり
ナイーブなお子ちゃまがいらっしゃるようでつな。
要はドラッグしているアイテムを特定する方法に Selected 以外に ありますか?あるとしたら、どの様な方法でしょう? あと、ドラッグアンドドロップのロジックを組んだことある人は、 やはり Selected を見て、ドラッグアイテムを特定していますか? 上記、2点の方法でそれぞれメリット、デメリットとか「こんな不具合があり得る」 みたいな事教えて頂けるとありがたいです
Selectedを見てる。それ以外は知らない。
451 :
デフォルトの名無しさん :03/08/01 22:27
コンボボックスの質問です。 知ってる人いたら原因教えてください。 TInputComboBox = class(TComboBox) private { Private 宣言 } protected { Protected 宣言 } procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS; public { Public 宣言 } published { Published 宣言 } end; procedure TInputComboBox.WMSetFocus(var Message: TWMSetFocus); begin showmessage('setfocus'); end; こんな継承クラスを作ってフォームに貼り付けたとします。 tabでフォーカスを移していった時にはダイアログが出ますがクリックした時に出ないのは 当たり前ですか?フォーカス移ってるんだから出てほし〜なと思うのですけども。
>>451 WM_SETFOCUS のヘルプ読んでみ?
キーボードって書いてあるが
> WM_SETFOCUSメッセージは、 ウィンドウがキーボード フォーカスを受け取った後に送られます。
スタイルによるけど、コンボボックスは中にエディット持ってるから、 クリックしたときはそっちに直接フォーカスが移ってるんだろ。 例えばcsDropDownListとかにすれば、エディット持たないから クリックでもメッセージが出る。
452さん、453さん ありがとです。 ちょっとテストをしてみました。 同じようなものをTEditで作成して検証です。 マウスクリックの場合でもTEditベースだとダイアログが出ました。 (そしてフォーカスの奪いあいで止まらなくなる) WM_SETFOCUSはフォーカスが移ればメッセージは投げられているっぽいです。 ごめんなさい>452さん 453さん説で内部的にどうなってるのか確かめてみます。 ヒントありがとでした。
456 :
デフォルトの名無しさん :03/08/02 00:00
質問なのですが、 別のアプリケーションのボタンをクリックしたいのですが、 どのようにすればよいでしょうか。
>>442 アプリケーションの新規作成でなにもないフォームにボタン一個置いて、
そこのクリックイベントに
>>441 の2行書き、
実行して、ボタンクリックしたら
>>440 の思惑通りになりませんか?
>>456 mouse_eventとか
SendMessage(ボタンのハンドル, BM_CLICK, 0, 0);
>>456 「他のアプリケーションのハンドルを得る方法」は分かりますか?
それさえ分かれば後はなんなりと。
>>460 ウィンドウクラス名か、ウィンドウのタイトルでFindWindowする。
ウィンドウクラス名は、Spy++とかで調べられる。
>>460 電卓を開いて、ソレを最小化
というのは下記サンプルが見つかったのですが、
それの中にあるボタンなどを特定がわからないです
var
hCalc: HWND; {ハンドル}
begin
hCalc:=FindWindow(nil,'電卓'); {電卓のハンドルを取得}
SendMessage(hCalc,WM_SYSCOMMAND,SC_MINIMIZE,0); {最小化}
end;
>>459 さんでいうところの、「ボタンのハンドル」を知る方法が分からない状態です
>>461 spy++というのが、ボタンのハンドル取得方法ということでしょうか?
すみません
>>463 でのサンプルページに、ボタンのハンドル取得のサンプルもまんま表示されていました。
大変失礼いたしました。アドバイス、ありがとうございました
(456書いてたときは、FindWindowすら知らなかったです)
>>463 勝手に人のアプリを自動制御されたら困る。君は困ることにならんか?
自分で作ったアプリを自分で制御するならどうにでもなるだろ。
子のハンドルを探す。
>>465 えーと、具体的にしたい作業は
「あるソフトのエディタ欄に文字を入力」
「登録ボタン」クリック
「次の文字を入力」「登録」・・・
という手作業を自動化できるかなと思いまして。
>>467 Windows3.1には標準でそういうツールが付いてきたんだけどな。(単なるマウスKBの記録再生だけど)
スクリなんとかっていうソフトもあったけど、もう出ていないみたいだな。
参考になりそうなAPI
FindWindow() mouse_event() keybd_event() IsWindowEnabled() IsWindow()
GetActiveWindow() GetWindowText() GetGUIThreadInfo() SendInput()
(^^)
>>470 ロケットマウスか?
と、思ったら違った…。
えーっと、質問です。 NKF32.DLLを使って文字コード変換するときに、 はじめの文字が英語だったらうまく変換できないとかは、 どうしたらうまくいくようになるのでしょうか?
>>472 それは nkf32.dll の問題ではないかな?
ま、くだすれだし。 nkf32 の NkfConvert の第一引数に S とか E とかを指定して、入力ファイルのエンコーディングを 明示指定してあげれば良いかと。 ところで、nkf DLL と、その Pascal インターフェースソースは複数の人が作っているんだけど それぞれ誰のを使っているの?
えっと、こんな感じでやってます。 SetNkfOption('-s'); Memo.Text:=NkfConvert(Memo.Text); うーん、誰のでしょう??
知るかよ
この帽子、ドイツんだ??
>>458 出来ました。ありがとうございます。
ボタン無しでゲーム起動から終了まで、表示することは出来ませんか?
オブジェクトインスペクタにBorderStyle欄があろうに。 つーか、ボタンがイヤならFormCreateに書けよ。
解答者の質悪ッ 人間的に駄目な奴ばっかり(藁
( ´,_ゝ`)プッ
>>479 オブジェクトインスペクタのBorderStyleは分かるのですが、
BoundsRect := Rect(0, 0, Screen.Width, Screen.Height);
の部分が分かりません。FormCreateも良く分かりません。
modとdivって何の略?
moduloとdivisionだと思う
486 :
デフォルトの名無しさん :03/08/02 18:12
>>483 分からない単語は検索するなりして分かるように努力すれば?
もうわかったから。役立たず君。
489 :
デフォルトの名無しさん :03/08/02 19:04
TWebBrowserってGIFの特許問題に引っかかったりするの?
>>490 MicrosoftはIEコンポーネントを使うならば問題無いと言っていた。
Unisisはコンポーネントを組み込んだアプリ毎に使用料を払えと言っていた。
どっちにしろもうじき特許の有効期限が切れるからキニスンナ
Unisys はドキュソって事でFA
TProgressBar の中に反転色で文字列を描画したいのですが、 どうしたら一番スマートでしょうか? 文字列には、例えば作業進行度などを「〜%」のような形で 表示したいと考えています。
>>493 TProgressBarにTLabelを乗せれば良いだけかと。
Label1:=TLabel.Create(ProgressBar1);
Label1.parent:=ProgressBar1;
TLabel.Transparent:=true;
TProgressBarを継承してSetPosition辺りをoverrrideしてパーセンテージと
進行度が常に一致するようコンポーネントを作ると良いのではないかと思われる。
それだけでは反転色にはならないだろう。
WM_PAINTで描画するというベタな方法が …ベター
てゆうか、sampleタブにズバリのコンポーネントが、、、
漏れのしゃれが寒さを増した
質問なのですが、 TMemoコンポーネトで、最初の行にカーソルを移動することはできますか?
できますよ。
ありがとうございました
Memo1.SelStart := 0;
ありがとうございました
ありがとうございました
ありがとうございました ぬるぽ
世界が平和になりますように
レスありがとうございます。 書き方が悪かったようで申し訳ないのですが、 表示するのは作業進行度とは限らず、 とにかく文字列を表示したいので、 TGauge を使う方法は利用できませんでした。 WM_PAINT を使う方法も考えましたが、 なんだかDelphiらしくない気もしています。
GroupBoxとRadioButtonの合わさったコンポーネントってありませんか? GroupBoxのキャプションの隣にRadioButtonがある、みたいな。
*やさしい*スレッドって、どうなったのですか?終わった?
質問です。 Button系のコンポーネントを利用して、ボタンが押されている状態を取得する方法がわかりません。 具体的な処理は以下のとおり。 マウスダウンにより、ボタンが押されるとタイマーを起動し、一定間隔で処理を行います。 そのマウスが離されるとタイマーをストップします。 ただし、マウスボタンが押されている状態で、カーソルがボタンから離れるとタイマーをストップ。 その状態で、カーソルがボタンに入るとタイマーを起動。 要するに、ボタンの浮き沈みと同じく、タイマーを制御したいのです。 できればフォーカスを受け取らないTSpeedButtonか、TToolBarのTToolButtonを利用したいです。 このような処理を行うにはどうすればよろしいのでしょうか? よろしくおながいします。
こういうことが出来るかどうかもわからないんだけど、 他人の作ったDLLを、自分のEXEに取り込んじゃって、 単一ファイルで配布したい。 理由は、インストーラなしである以上、ファイル構成を単純化したいから。 何とかなるかい?
>>514 Windowsはその状態を教えてくれない。
よってDownプロパティは望み通りには動作しないため、
自前でマウスメッセージを処理すること。
質問させて下さい
ブラウザ機能を用いて指定ページを表示完了したら次のページを開く
と言ったようなものを作りたいと思っています。
自分で考えたことは、WebBrowser1.Busyを用いて、状態を判断して見ようと思ったのですが
無限ループ状態になり、処理が進んでいません。
読み込み処理を実行しつつ、完了するのを待つにはどうしたらいいんでしょうか。
↓現在この状況
begin
for i1:=0 to i2 do
begin
Edit1.Text := '
http://www.xxx.yy.zz/ ';
while WebBrowser1.Busy = True do
begin
(ここに何か入れるべき…?)
end;
end;
end;
>>514 MouseDown
MouseUp
MouseEnter
MouseLeave
で出来る
ドキューンメソト コソプリート イベソト ジャ ダメナノカイ?
>>520 オマエ、ドコカラカキコシテルンダ?(ワライ
その場合は、iをグローバル変数にして、イベント発生でiを+1して 次のを実行…ってのを繰り返しという手順ですよね 少しやってみます。 サンクスーコ
すぐバグだとか騒ぐのもなんですが、 Breakプロパティでメニューを二列に表示すると、 二列目に使っている”-”の横線描画がバグっちゃってるみたいなんだけど、 回避できないですか?
>>522 グローバル変数なんか使うよりイテレータとか使う方が良いと思うけど。
イメージリストも指定した場合の描画です。 二列目以降のセパレーターが一列目までかぶって描画されます。
>>524 イテレータ…聞いたこと無かったので調べてみましたが
RubyことばかりでDelphiは見つからなかったです。
どういう事か何となくわかるような、わからないような…
この概念で考えたこと無いので実際どのように使うのかがちょっと
わかりません。
できたら簡単な具体的な使用例的な物を見せて欲しいのですが
よろしくお願いします
ありがとうございました
デザパタの本を買え
>>527 関数抜けないとbusyが解除されないと思われ
イテレータは関係ない
532 :
デフォルトの名無しさん :03/08/04 18:13
Delphiスレで聞く内容ではない気がしますが、開発ソフトがDelphiなので、 ここで質問させて下さい。 売る値段によって、機能の数や動作が変わってくるようなソフトを作る場合、 1.全てのソースをそれぞれのバージョン毎に分ける 2.同じ動きや似たような機能のソースは共有して、大幅に違う所はソースを分ける 3.全てフラグなどで切り分け、ソースは全て共有する 4.その他 のどれが良いですか? とりあえずバージョンは二つだけなのですが、後々バージョンが増えるかも しれませんし、バージョン毎に必要な機能も現時点では決定していません。 もしかしてDelphiだとそのような管理をする機能が付いていたりしますか?
あぼーん
4.その他
>>532 取らぬ狸の皮算用っていうかなんというか
>>536 ようするに仕様がコロコロ変わるんでつ(T^T)
継承をつかえ。
なるほど、仕様が変わるたびに継承で対応するわけですね。
冗談ですよ。つまらない奴ですね。
うっせークズ共。とっとと、答えろや!
543 :
デフォルトの名無しさん :03/08/04 21:05
PCJapan:2003年8月号 - 特集4:Windowsカスタマイズツールを作ろう
PCJの多くのユーザーが何らかのカスタマイズツールを使ったことがあるだろう。
そうしたツールを使っていて,「この機能がほしい」,「このインターフェイスを変え
たい」などと感じたことはないだろうか。カスタマイズツールを自分でプログラミン
グできれば,本当に欲しい機能を備えたツールが得られる。この特集では,付録
CD-ROMに収録したプログラミングツールを使って,オリジナルのカスタマイズツ
ールを作るテクニックを紹介する
Part1 簡単にプログラムを作れるDelphiをマスターしよう
Part2 プロが教えるカスタマイズツール作成テクニック
http://www.zdnet.co.jp/magazine/pcjapan/0308/sp4/
544 :
デフォルトの名無しさん :03/08/04 21:06
546 :
デフォルトの名無しさん :03/08/04 21:09
そうだ!簡単じゃないぞ! ユーザーからはあれ付けてくれこれ付けてくれって言われるし、 新OSには対応させなきゃならないし。 もちろん自分で使うってなら別だが。
550 :
デフォルトの名無しさん :03/08/04 22:45
これからも
>>549 みたいな夏厨が押し寄せてきそうな予感
ネトランとPCJapanどっちが厨読者多いだろうか。
NASAのシステムよりも窓の手がDel製と いった方がよほど説得力があると思うのだが…
窓の手など一般人からみればしょぼいヲタツール おまいらからみたハッキングツールと同じような目でみられてるので マイナスイメージしかつかねーよ
554 :
デフォルトの名無しさん :03/08/04 23:13
WINDOWS をBASICでつくることはできますか?
WINDOWSという名のソフトはBASICでも作れますが?
556 :
デフォルトの名無しさん :03/08/04 23:16
そうなんですか? どんな感じになりますか?
BASICになります
558 :
デフォルトの名無しさん :03/08/04 23:41
ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、
DLLを実行ファイルのフォルダの中に作成したサブフォルダに入れ、 なおかつ external で静的にロードすることは可能でしょうか? [Hoge] ├ hoge.exe └ [DLL] ├ huge.dll └ func.dll 可能であれば、具体的にはどう記述すればよいでしょうか? external 'DLL\huge.dll' を試してみましたが、アクセス違反が起こりました。
DLL のフルパスで、path に加えても?
>>560 path といいますと、環境変数の事でしょうか?
環境変数は弄らないようにしたいのですが…
もし弄らないと出来ないのでしたら、素直に諦めます。
コンポーネントスレってこの板にある?
>>559 あたり
procedure foo; external 'test\bar.dll';
でできたけど?(Windows 2K)Windows ローダーが DLL を見つけられない場合は
「hoge.exe - DLL が見つかりません」って表示するはず。
「アクセス違反」ということは、DLL はロードできているということで
原因は別にあるのではないかな?
566 :
デフォルトの名無しさん :03/08/05 09:47
現在フォームに表示をしている、レコード1件のみをQuickReportで プレビュー及び印刷をしたいのですが、どの様にすれば宜しいのでしょうか? Delphi6上で、TTableを使ってDBを構築しております。 恐れ入りますが、諸先輩方の知恵をお貸し頂けますでしょうか。 それではよろしくお願いいたします。
>>566 コード書かずに済ませたいなら...
1件だけなら DB 系 QReport コンポーネントを使わないで処理するってのは?
TTable の変わりに TQuery で、ひとつのレコードだけ表示するってのは?
TTable の Filter を設定して、ひとつのレコードだけ表示するってのは?
568 :
デフォルトの名無しさん :03/08/05 11:19
TNMFTPのインストールの仕方を教えて下さい。 当方Delphi7 Professionalです。 宜しくお願いします。
>>567 さっそくのレス、ありがとうございます。
現在構築済みの物に追加して、1件のみの印刷をしたいと考えております。
TTableとTQueryを並行に運用出来るのか私には分からないですが
3番目のFilter設定は使った事がありますので、カレントレコードに限定する
手法が分かれば、私の稚拙な力でも出来そうです。
この点で質問なのですが、実行中の画面上ではDBの抽出(Filter)が
行われた事に気付かせずに、この手の作業は可能なのでしょうか?
>>565 (´Д`;)
どうやら、原因は別の所にありそうです…。
現在DLLをロードするDLLを作ってるのですが、
それは関係ないですよね…。
[hogehoge]
├ hoge.exe (huge.dll をロードする実行ファイル)
└ [DLL]
├ huge.dll (現在作成中のDLL)
└ [huge]
└ func.dll (利用したいDLL)
procedure foo; external 'DLL\huge\func.dll';
CDデータベースにCDプレイヤー機能をつけて、CDドライブに入っているCDの情報を表示させたいと思っています。 いろいろ調べて、GetVolumeInformationの、SerialNumberを使えばいいのかと思いましたが、 たまたま持っていた二枚の同じCDで試してみるとSerialNumberが異なりました。 こんなときに使える関数、方法、サイトなど教えてください。お願いします。
すみませんちょっと変な文章でした・・・。 質問は、「音楽CDのタイトルを判別する方法を教えてください」です。 Delphi6Personal使ってます。よろしくお願いします。
Delphiでビートマニアみたいなものって作れますか?
SerialNumberとそのCDデータベースで実現できます
レスありがとうございます。 しかし、私が持っていた二枚の同じタイトルのCDは、異なるSerialNumberを持っていました。 同じタイトルの音楽CDに共通のID番号の様なものがあればうれしいんですが・・。
だろうね
誤爆
TListViewに重複項目を出さないようにするにはどうすればいいですか? procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange); var i:integer; begin for i:=ListView1.Items.Count-1 downto 0 do if ListView1.Items[i]=ListView1.Items[i+1] then ListView1.Items[i+1].Delete; end; ソートしてやってみてもダメだったぽ(´・ω・`) できればSubItemの重複でできるようにお願いします。
580 :
ダサダサコーディングで良ければ :03/08/06 00:51
一旦、TStringlistに全部移してソートして戻す。 はい次↓
よーく読見返してみたけど、
>>580 はダメだな(藁
忘れてくれ。
1行なら問題無いと思うが。
ダサイけど(藁
>>579 function MatchListItem(L1, L2: TListItem): Boolean;
var
I: Integer;
begin
Result:=false;
if L1.SubItems.Count<>L2.SubItems.Count then Exit;
if not(SameText(L1.Caption, L2.Caption)) then Exit;
Result:=true;
for I:=0 to L1.SubItems.Count-1 do
begin
if not(SameText(L1.SubItems.Strings[I], L2.SubItems.Strings[I])) then
begin
Result:=false;
Break;
end;
end;
end;
続き procedure TForm1.Button1Click(Sender: TObject); var I, n: Integer; begin I:=0; while I<ListView1.Items.Count do begin n:=I+1; while n<ListView1.Items.Count do begin if MatchListItem(ListView1.Items.Item[I], ListView1.Items.Item[n]) then begin ListView1.Items.Delete(n); Dec(n); Dec(I); end; Inc(n); end; Inc(I); end; end;
>>570 まずはバグの切り分け。
DLL 名にパス名を付けない状態で正しく動くことを確認するのが先でしょう。
次に、path 環境変数に置き先ディレクトリを追加した状態でテスト。これで各 DLL が
異なるディレクトリにあっても動くかどうかを検証。
最後に external 指定にサブディレクトリを追加。
こんな順番でがんばって
>>571 CDDBみたいに、MSFアドレス、トラック数、各トラックアドレスなどから
CDを判別するのはどう?
var Memo : array[1..100] of TMemo; i : integer; begin for i := 1 to 100 do Memo[i] : =T Memo.Create(Memo[i]); これをやるとデフォルトプロバティが無いというエラーで怒られますが どうにか簡単に作る方法は無いでしょうか?
Memo[i] はこれから作るところなんだから >Memo[i] : =TMemo.Create(nil); はエラーになるでしょ? >Memo[i] : =TMemo.Create(nil); または Memo.Create(self); かな?
>>588 レスありがとうございます
試してみたところ同じエラーがでてできませんでした
エラー文を正確に書くと
>このクラスはデフォルトプロパティを持っていません
です
>>585 レスありがとうございます。
CDDBでもそのように判別しているということは、タイトルごとに共通なIDは存在しないようですね。
取得しやすい情報を組み合わせてやってみようと思います。
ありがとうございました。
>>586 さんでした・・・。
ありがとうございました。
592 :
デフォルトの名無しさん :03/08/06 07:02
初心者小僧です。 Indyコンポーネントの使い方とか、Indyコンポーネントのチップス(これを行うには このコンポーネントのこのメソッドを利用するみたいな)とかを紹介している 良いWebサイトをあれば教えてもらえないでしょうか?
>>579 なぜにOnChange?
Captionでソートしてあれば
for i := ListView1.Items.Count-1 downto 1 do
if ListView1.Items[i].Caption = ListView1.Items[i-1].Caption then
ListView1.Items[i].Delete;
SubItemsでやるならCaptionをSubItemsに変えればよろし。
SubItemsでソートしてから動かせよ。
ファイラーみたいなの作る時、みんなコンポーネント何使っているの? SamplesのShellListViewコンポーネントとか使うとFD見に行って、 ガコガコ鳴って五月蝿いんだけど…(;´Д`)
>>595 TListBoxをOwnerDraw。
俺はListviewをオーナードローとオーナーデータ。
>>587 メモコンポを100個動的に作るということですが
まさか100個同時には画面表示できないでしょうし….
もしかしたら2ちゃんねる専用ブラウザのように
複数のテキストを切り替えて表示したいのかもしれませんが,
こういう場合は各テキストの保管はとりあえず文字列変数のの配列か何かにして,
そしてテキストを表示するためのコンポ(コントロール)は1個だけにして,
アクティブなテキストを切り替えるたびに内容をコピーするのがよいと思います.
Altキーの入力を無効にするにはどうしたらいいんでしょうか。
やっぱ、自前の人もいるのですな… すばらし〜コンポーネントがどっかでフリーでソースつきで無いかなぁ…。
>603 おーおー! そういえば以前MLでもTurboPower社の話が出てましたな! 元が商用だけに期待できますな!!( ̄▽ ̄)
606 :
デフォルトの名無しさん :03/08/06 18:30
>>600 ダウンロードします、ありがとうございました。
608 :
デフォルトの名無しさん :03/08/06 21:58
リポジトリへ登録しまくっていたプロジェクトを フォルダー毎コピーして、新しいプロジェクトを作成して修正していました。 そして、フォーム上のListViewから1項目削除しようとすると、 別のフォームから継承されたコンポーネントを含んでいるため削除できません。 とエラーが出て削除できないのですが、プロジェクト内を検索してみても 継承されたコンポーネントなんてありません、何処かに前のプロジェクトの リポジトリ情報でも記録されているのでしょうか??
>>607 もうちょっと具体的に言わないと。
「これこれこういう機能を無効にしたいのでこのコンポーネントでALTキーを無効に出来ませんか?」みたいな
>>609 Alt+F4を無効にしたいのです。
ジョークソフトを作っているので。
ちなみにAlt+Ctrl+Delの無効化はSystemParametersInfoでできました
Alt+F4に別の機能を割り当てる
三つ簡単な質問あります。 shelltreeviewとfilelistboxのリンクの仕方 shelltreeview、filelistboxで選択したディレクトリの場所とファイル名の取得 上にありましたがfilelistboxのMaskを"複数"にしたい場合 超初心者ですんません・・
delphiで作ったアプリケーションで 別のプログラム(たとえばword)を動かせるのですか? 実行ボタンを単純に一個作って、ボタンを押すとword.exeを起動(その後テキストを貼り付け、保存終了をする予定)。 秀丸マクロではなく、delphiで作りたいのですが・・・
615 :
デフォルトの名無しさん :03/08/07 02:44
>>613 ShellListViewなら ShellTreeViewのShellListViewに設定するだけなんだけど。
618 :
デフォルトの名無しさん :03/08/07 12:42
JoyPadからの入力を受けるのにjoyGetPos,joyGetDevCapsなどを 使えばいいということは分かったんですが、 引数がよく分かりません。 引数はどのようにすればよいのでしょうか?
DirectInput使いなよ。
620 :
デフォルトの名無しさん :03/08/07 13:00
DelphiでTCP/IP通信をモニターするプログラムを作りたいのですが、 ポートを設定せずに通信をモニターするにはAPIとか使わないと駄目ですか?
>>615 ありがとうございます!
これを大きいアイコンではなくて一覧リスト表示したいのですが・・
あと、ディレクトリの場所とファイル名の取得はどうしたらよいでしょうか?
>>621 621を訂正します・・
ドライブコンボボックス,ファイルリストボックス,
およびディレクトリリストボックスでのディレクトリの場所とファイル名の取得はどうしたらよいでしょうか?
それぞれのドライブ、ディレクトリ、ファイル名をeditに出力したいのですが・・
FormのParentFontって、何を親にしてるの? 効いてない気がするんだけど。
Parentがnilなら意味ないよ。 FormにForm埋め込むと効いてくる。
効いたよー効いたんだよー
>>621 ViewStyleをいじる
ってこの質問却下かよ・・・
>>618 丹念に検索すれば必ずサンプルが見つかるハズだよ。
オレも昔、探したし。
ヒント:
「JOYSTICKID1」、「TJOYINFO」、「TJOYCAPS」
うまく説明出来ないんですが なにかのソフトでよくショートカットキーの割り当てをするとき 例えばキーボードのCtrl + S を押せばCtrl + S が表示されるってのがありますよね あれをdelphiでやりたいんですがそういうコンポとかありますか?
case文の中にRandom関数を入れると 初期化されない場合があると言われて困っています。 どうしたらいいのでしょうか? 簡略化してますがこんな感じです。 a := 1; Randomize; case a of 1: b := Random(100)+1; end; ShowMessage(IntToStr(b))
a := 1; b := 1; Randomize; case a of 1: b := Random(100)+1; end; ShowMessage(IntToStr(b)); でええんでないの?
>>628 THotKeyを使うってことではないでしょうか?
なんでアイツ助けた!
ごめん、誤爆した。↑
StatusBar1のPanels[0]のTextの2バイト文字の先頭1文字を消したいのですが ↓のでは消えてくれません。どこがわるいのでしょうか? Bar := StatusBar1.Panels[0].Text; Delete (Bar,2,2);
>>636 var
S: String;
L: Integer;
begin
S:=StatusBar1.Panels[0].Text;
if 0<Length(S) then
begin
L:=1+Ord(IsDBCSLeadByte(Byte(S[1])));
Delete(S, 1, L);
StatusBar1.Panels[0].Text:=S;
end;
end;
639 :
デフォルトの名無しさん :03/08/08 11:04
DelphiでHORBは使えますか?
640 :
デフォルトの名無しさん :03/08/08 12:16
コードエディタのしおりは保存できないの?
641 :
デフォルトの名無しさん :03/08/08 12:27
タイトルバーのクリックを検知する方法おしえて下さい。 よろしくおねがいします。
642 :
デフォルトの名無しさん :03/08/08 12:31
643 :
デフォルトの名無しさん :03/08/08 12:53
TTreeNodeをVisable:=Falseみたいに存在してるんだけど 見えない。ってじょうたいに出来ますか? ノードが折りたたまれて見えないのとはまた別の意味で。
644 :
デフォルトの名無しさん :03/08/08 14:15
123456789を123,456,789みたいにしたいけどできないぽ(´・ω・`) var ListItem: TListItem; 略 ListItem:=Items.Add; ListItem.Caption:=SearchRec.Name; ListItem.SubItems.Add(Format('%10.0n', [(SearchRec.Size + $3ff) shr 10])); ListItem.SubItems.Add(DateTimeToStr(FileDateToDateTime(SearchRec.Time))); 略 これでやると(%n使うと)エラー吐いて死んでくれます。 どうすればよろしですか?
>>644 ヘルプの%nの説明に、引数は浮動小数点値でなくてはならないって書いてる。
646 :
デフォルトの名無しさん :03/08/08 14:32
ShellListViewで、カラムをクリックしたときにファイルサイズや日付でソートするには どうしたら良いのでしょうか? いろいろ見てみたのですが解りませんでした…(汗)。
647 :
デフォルトの名無しさん :03/08/08 15:00
Formに乗っている全てのコントロールを強制的に 再描画させるにはどうしたら良いでしょうか?
Form.Refresh;
>>636 × Delete(Bar, 2, 2)
○ Delete(Bar, 1, 2)
文字列の先頭が2バイト文字でその1文字を削除する場合は
先頭の2バイト(1バイト目から2バイト分)を削除しなければいけないのですから,
Delete(Bar, 1, 2) が正解となります.
文字列の先頭が2バイト文字とは限らない場合は
>>638 のように1バイト文字なら1バイト,2バイト文字なら2バイトを削除するようにするか,
あるいはワイド文字列を使います.
var
ws: WideString;
begin
ws := StatusBar1.Panels[0]; // ワイド文字列に変換して代入されます
Delete(ws, 1, 1); // ワイド文字列版のDelete手続き
StatusBar1.Panels[0] := ws; // 通常の文字列に変換して代入されます
end;
650 :
デフォルトの名無しさん :03/08/08 17:37
Office2000 professional、Delphi6 personalを持っています。 データベースを作るとして 1)前者で作ると、ACCESSの入ってない環境では使えない。 2)Delphiで作ると自立した?アプリケーションが作れるので、多くの環境で 使えるが、personal版ではDBは作れない。 という理解でよろしいのでしょうか?
>>645 とりあえずエラーは吐かなくなったので試行錯誤してみます
>>645 ぁ、できました。どうもありがとうございました
WebBrowserコンポーネントを使ってタブブラウザを つくっていますが、キャッシュを使用しない更新は var i: integer; Level: OleVariant; begin if (MDIChildCount > 0) then begin with MainForm do for i := MDIChildCount-1 downto 0 do if TIEWindow(MDIChildren[i]).WebBrowser1.Document <> nil then begin TIEWindow(MDIChildren[i]).WebBrowser1.Refresh2(Level); end; end; end; でいいのでしょうか。教えてください。お願いします。
>>653 自己レスですが、それであってるようでした。
ありがとうございました。
655 :
デフォルトの名無しさん :03/08/08 20:45
宣言したのにまったく使ってない変数はやっぱりアセンブルされたときに 余分なコードとしてEXEに組み込まれてるの? それとも最適化の段階でカットされてるのかな?
Windowsキーを無効にしたいんですが、どうやればいいのでしょうか。 キーボードを壊すとかは勘弁して。
657 :
デフォルトの名無しさん :03/08/08 20:56
Delphi6 Personalで簡単なメーラーを作りたいのですが、 Personalだと無理でしょうか?
658 :
デフォルトの名無しさん :03/08/08 21:07
>>657 Delphi6 + Indyコンポーネントでできると思う
659 :
デフォルトの名無しさん :03/08/08 21:14
>>658 ありがとうございます。
調べてがんばってみます。
661 :
デフォルトの名無しさん :03/08/08 21:19
>1)前者で作ると、ACCESSの入ってない環境では使えない。
おおむねその通りだと思います。
>2)Delphiで作ると自立した?アプリケーションが作れるので、多くの環境で
> 使えるが、personal版ではDBは作れない。
前者はあってますが、後者はそうでもありません。
Windowsにはデータベースエンジンの「ADO」という一種のActiveXが
組み込まれていて(古いOSには入ってませんが)、DelphiからADOを
コントロールすれば、Accessを持っていない環境でもAccessファイルを
操作することが出来ます。ただしPersonalではめんどうです。
以前書いたので参考にしてください(92から。98はわたしです)
http://pc3.2ch.net/tech/kako/1028/10284/1028436692.html
>>656 無効にしたい処理の前に下記のコードを記述。
ShowMessage('Windowsキーを押さないでね!v(^○^)v')
663 :
デフォルトの名無しさん :03/08/08 21:25
ひろみに会いたい人、ひろみが欲しい人、手ぇあげてっ!
はーい、その指をマウスにもってってぇ・・・
ここをclick! ☆ъ( ゜ー^)>
http://www.gals-cafe.tv 1週間毎日10分、がんばってサービスしますっ!来てください♪
・・・えっ?誰も手ぇあげてなかったってハナシ?
そんなんナシだよぉ〜〜〜。・°°・(>_<)・°°・。
会いたいよぉ。きてくださぁい( ・O・)∞∞OOO○○○☆(〃。。〃)
664 :
デフォルトの名無しさん :03/08/08 21:25
v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v v(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)vv(^○^)v
665 :
デフォルトの名無しさん :03/08/08 23:11
Button1を押すと「フォームを50%に縮小して表示」 このプロシージャ、どんなふうに書けばいいんでしょ
procedure TForm1.Button1Click(Sender: TObject); begin height := height div 2; width := width div 2; end;
スレ違いかも知れませんが 【】すみつきカッコの文字コード分かる方いらっしゃいます?
668 :
デフォルトの名無しさん :03/08/08 23:33
>661 有難うございます。 教えて頂いたスレのレス、保存させて頂きました。 少しずつ、勉強していきたいと思います。
670 :
デフォルトの名無しさん :03/08/08 23:35
>>661 OS means Windowsかよ。おめでてぇ。
672 :
デフォルトの名無しさん :03/08/08 23:38
>>670 Delphiスレで何言ってんの(^-^*)♪
673 :
無料動画直リン :03/08/08 23:38
>>671 素直にSJISの文字コード表見た方が良いと思うぞ。
>>666 _| ̄|○
まったくもって申し訳ないです
書き方が悪かったようで。
縮小したいのはフォームそれ自体ではなく、中身なのでした。
こんな書き方も変かな。
1000Pの文字とか(んな無茶な)、普通に表示したらはみ出すようなものを、
おさめてくれるような。
ExcelVBAでいうところの
ActiveWindow.Zoom = 50
みたいな
>>674 スンマセン。他の括弧は見つかったんですが【】は見つからなくて・・・
見直してきます
>>675 地道に全部のサイズを手動で制御するしかないんじゃないかな…?
それか、どっか別の場所の架空のフォームを作って、そこに書かせて
それをサイズを縮小してコピーとか…
イベントとかを座標修正して転送してやる必要がありそうだけど。
Timerコンポーネントがよく分からないんですけど Timer1.Enabled := False ; とするまでIntervalで指定した間隔で実行し続ける ということではないのでしょうか?
それで合ってます
>>679 そうですかありがとうございました。
では違うところが間違っていたのか・・・。
Intervalで指定した間隔でタイマーイベントを繰り返す
>>675 有償コンポがあるくらいだから標準では無理。
procedure TForm1.FileListBox2DblClick(Sender: TObject); begin FileListBox2.FileEdit:=Edit19; end; list内ファイルをダブルクリックをすればedit19に出力するんですが、 list内のファイルを選択する一回目はダブルクリックでいけるのですが、 二回目からはワンクリックでedit19に出力してしまいます・・ 二回目以降もダブルクリックで出力できるようにするには? 教えてください・・
使い方間違ってます。
最小化とかは普通に出来ても最大化やサイズ変更が出来ない フォームを作るにはどうすればいいのですかね? BorderStyleとかいじってもうまくいきません。
BorderStyleがbsSingleで、BorderIconsのbiMaximizeをFalse。
shift_jis 2バイト文字コードから、直接文字を表示するにはどうすればいいんでしょうか? WideCharにすると、文字コードがずれるし分かりません。
ボタンの上とかにマウスを載せるとポップアップヒント(?)が出るのはどうやってるんですか?
ListViewで項目を選択する際 一個目は問題ないんですがその後他の項目を選択しようとすると OnSelectItemでエラーが出てとまってしまいます。 どうにかなりませんか?
>>691 該当するコーディングをチェックし直す。
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); begin Edit2.Text:=ListView1.Selected.Caption; Edit3.Text:=ListView1.Selected.SubItems[2]; end; 2個目を選択しようとした時↑の Edit2.Text:=ListView1.Selected.Caption; に引っかかってる・・・。 何が問題なのかわかんない・・。漏れの頭?
if Key = 'a' then begin ShowMessage('a'); end; 押すkeyがaではなくspaceで反応してほしいのですが そう言う場合はどう改変したらよいのでしょうか?
SubItems[2];の「2」って何を示してるつもりダス? あと、エラーで困ってる場合は、そのエラー文も書くと(略)
>>695 SubItemの3つ目です。vsReportでのListViewの左から4つ目の項目。
コメントアウトしてみてもやはり2回目でエラーでした。
デバッガ例外が発生-----
プロジェクトが EAccessVilotationクラスの例外を生成しました。
'Access violation at address 004769CE in module 'Project1.exe'. Read of address 00000024'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
[OK] [ヘルプ(H)]
------
>>696 if Selected then
begin
Edit2.Text:=ListView1.Selected.Caption;
Edit3.Text:=ListView1.Selected.SubItems[2];
end;
>>698 (TT)ありがとうございました。無事選択できるようになりました。
>>694 procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=' ' then ShowMessage( ' ' );
end;
こういう意味?
>>700 すいません、スペースバーを押すことによって反応して欲しいということです。
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_SPACE then begin ShowMessage('a'); end;
ぁ、すまん。イベント違うな 参考までに リターンキー VK_RETURN スペースキー VK_SPACE エスケープキー VK__ESCAPE SHIFTキー VK_SHIFT CTRLキー VK_CTRL ALTキー VK_ALT F1 〜 F12 VK_F1 〜 VK_F12 BSキー VK_BACKSPACE カーソルキー VK_LEFT , VK_UP , VK_RIGHT , VK_DOWN
>>700 もう一度すいません。
key=' ' でもスペースに反応してくれるんですね。
ありがとうございました。
>>702 ありがとうございました。
もう一つ質問なんですけどこれをCtrl+なにかのキーで
反応するようにするにはどうしたらいいのでしょうか?
>>703 ifを二重にしたらCtrl+なにかもできそうですね。
ありがとうございました。
>>677 >>682 お手数おかけしました
ほぼ10時間、頭かきむしりながら別フォームで試そうとしましたけど
体力の限界です。
今回のところは投げ出します。
もちょっと腕上げてから出直してきます。
ステータスバーに時間が減って行ってるのが視覚的に分かるような コンポーネントをいれたいのですがちょうど良いコンポーネントはありませんか? プログレスバーだと増えているようなイメージがあるので・・・・。
>時間が減って行ってる のを逆手にとれば、プログレスバーでいいじゃん
>>707 Anchorsを全部外してみては?
違うかな?
>>708 Windowsでは数値が減るのは殆どが数字で表現されているよ。
プログレスとかゲージとか使うんなら、経過時間(増える)とかにすれ。
プログレスバーで満タンから減らしていくっていうのはダメダメ(奇抜)ね。
あ、ビジネス系じゃなくてゲームなら許容されるかもね。
TComboBoxって複数bytes文字に対応してないの? BSが1bytes毎なんだけど。
TListViewのOwnerDrawについて詳しく説明されてるHPないですか?
>>713 AutoCompleteがTrueになってない?
質問なのですが、
TRichEditコンポーネトで、最初の行にカーソルを移動することができたら、
その方法を教えていただけませんか?
>>503 をみて、TMemoコンポーネントなら
できるようになったのですが、同じ方法では
対応できていないようなので、よろしくお願いします。
>>716 検索が足りないと思うよ。
リッチエディットの最後の行:=richedit1.Lines.Count;
RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX,リッチエディットの最後の行,0);
RichEdit1.Perform(EM_SCROLLCARET,0,0);
フォーカスが当たらないとダメっぽいから注意。
TlistView OwnerDraw ListView OwnerDraw Delphi Ownerdraw リストビュー OwnerDraw TListView オーナードロー Delphi オーナードロー こんだけググっても見つからないなんて(;´Д`) 他にイイ(・A・)検索単語ありますか?
>>718 (´-`)。o ○ (オーナードローの何が知りたいのか書かないから、レスが付かないと思われ…)
Editに入力されている文字が1バイト文字かどうか判断したいのですがよい方法はないでしょうか? 入力できるのを1バイト文字に固定せずif文等での判断でいいのですが。 よろしくお願いします。
ByteType
Formの拡大に合わせてボタンが拡大されるようにするにはどうすればいいんですか?
>>721 ありがとうございました。
しかし使い方がよく分からないので解説していただけないでしょうか?
ググってもよく分からなかったもので。
>>723 Delphiに付いているヘルプは見ましたか?
>>722 Anchorsを全部trueにしたり色々してみて研究してください
>>687 Shift-JISコードに対応する文字を出したいということでしょうか.
{
Shift-JISコードを文字に変換します.
}
function SjisToStr(const SJisCode: word): string;
begin
SetLength(Result, 2);
Result[1] := chr(SJisCode shr 8);
Result[2] := chr(SJisCode and $ff);
end;
{
Edit1.TextにシフトJISコード
Edit2.Textにそれに対応する文字
}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := SjisToStr(StrToInt('$' + Edit1.Text));
end;
>>727 ようやく分かりました。
脳みそ無限ループに入っていたので、大感謝!
>>723 「これはどうするのだろう?分からない」
↓質問
「レスは来たけど、やりかたが分からない」
↓質問
…
ループを続ける気ですか?ヒントもらったんだから、徹底的にいろいろ
実験してからでも遅くは無いと思うが…。
>>723 bytetype(Edit1.Text[i])で戻り値が
mbTrailByte //全角2バイト目
mbLeadByte //全角1バイト目
mbSingleByte //半角
わかりました。 ありがとうございました。
732 :
デフォルトの名無しさん :03/08/11 12:34
delphiでIRCクライアントの作成はできますか? ただ会話さえできれば良い程度で、ファイルの受け渡しや @配布とかモード変更とかも無し程度の機能です
>>732 RFC 1459
TClientSocket
>>725 それだと大きくなり過ぎるんですよ。
Formと同じくらいの倍率で拡大することはできないのでしょうか?
どこかの海外のコンポーネントで、 ボタン状で、押下するとメニューが出る、 っていうやつがあったと思うんだけど、 どこのサイトだっけ…?
すいませんVB厨です。 Delphiを使うことになって勉強しるのですが、わからないことがあるので、 教えていただけないでしょうか。 Form1からForm2を開きたいのですが、Form2を同時に何個も開き、 同じ処理をさせたいと思っています。 (例えば、Form1でjpgファイルを選択すると、次々に Form2が開き、それぞれ異なる画像が表示されるような・・・・) 例えばVBですと、 Dim objForm(10) as Object 'オブジェクト型で配列を作成 Set objForm(i) = New Form2 'オブジェクトのコピー objForm(1).Show '1.jpgが選択されフォーム表示 objForm(2).Show '2.jpgが選択されフォーム表示 のようにすると、Form2を何回も再利用できますよね。 このとき、2.jpgを選択すると1.jpgのフォームは残しておきたいのと、 例えば画像をクリックしたときに何らかの動作ができるようイベント も取得したいと思っています。 Delphiでは、どのようにすれば実現できるのでしょうか。 過去スレで似たようなのがありましたが、いまいちピンとこないので、質問 させていただきました。 まったくわからないので途方にくれています。よろしくお願いいたします。
>>736 Delphiでは、作成したフォームが、既にクラスになってます。
Var
F1:TMyForm;
F2:TMyForm;
Begin
F1 = TMyForm.Create(self);
F1.Show;
F2 = TMyForm.Create(self);
F2.Show;
です。配列にしたきゃ、TObjectかTFormの配列に代入して下さい。
>>736 なぜ最初に「すいません」と謝るのか。
「VB厨ですいません」と謝っているのか。
だとしたらそれは間違い。
外人に対して「日本人ですいません」と言ってるようなもの。
言語の壁は、ベルリンの壁より厚いが、生垣より低いはず。
>>737 お、ありがとうございます。
なるほど!なんか、そのように聞いて目の前のモヤがなくなった気がします。
少しだけオブジェクト指向の考え方に近づいたような気がします。
ちと長くなりますが、後進の方のために記述しておきます。
普通に新しくForm2を作ります。
Form1のinterfaceのusesの部分にUnit2を追加し、
arrForm2 :array[0..10]of TForm2;と変数を宣言し、
あとはarrForm2[0] := TForm2.Create(Self);で無事に
つくることができました。
はじめは何故かTFormでオブジェクトを造っていたので、
TForm2に設置したエディットボックスをいじることができず、
悩んでしまいましたw
わざわざありがとうございました。
また疑問があったらよろしくお願いします。
>>738 なんか申し訳ないかな?と思いまして。
どもすいません
>>734 じゃあ、なぜ先にそう書かない
質問スレで小出しすんなボケが
743 :
デフォルトの名無しさん :03/08/11 18:21
unit A の interface 部で宣言した定数 CONST_A1 を、unit B で使うためには、 unit B で uses A をするだけではだめなのでしょうか? "未定義の識別子" となってしまいます。 同じような形で宣言した型 typeA1 は使えるようなのですが。
744 :
デフォルトの名無しさん :03/08/11 18:51
>743 いや、それで使えるはずだよ。スペルミスとかじゃないの?
hogehoge : byte; このhogehogeの 上位4ビット(age)と下位4ビット(sage)に分けたいのですが、 どうしたらいいですか? delphiの最小単位がbyteかな?どうすれば。。。
shl and and
hogehoge&0xF0 hogehoge&0x0F
MainMenuやPopupMenuの背景色を変える方法ありませんかー?
オナドロー
>751 TMenuBar経由だと出来ないっぽい…
ScrollBoxにImage1を置いて、マウスドラッグでスクロールさせるには どんな風にコーディングすればいいのでしょうか?
>>754 つまんで移動する感じ?
MouseDownとMouseMoveとMouseUpを使用する。
MouseDownでフラグをON
MouseMoveかつフラグONのときに移動
MouseUpでフラグOFF
>>755 「スクロールさせる」の部分が分からないんじゃないの?
>>754 var
DragPos : TPoint; DragDown : boolean;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
DragDown := true; DragPos.X := X; DragPos.Y := Y;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
MovePos : TPoint;
begin
if DragDown then
begin
with ScrollBox1 do
begin
if HorzScrollBar.Position > HorzScrollBar.Range then HorzScrollBar.Position := HorzScrollBar.Range;
if HorzScrollBar.Position < 0 then HorzScrollBar.Position := 0;
if VertScrollBar.Position > VertScrollBar.Range then VertScrollBar.Position := VertScrollBar.Range;
if VertScrollBar.Position < 0 then VertScrollBar.Position := 0;
HorzScrollBar.Position := HorzScrollBar.Position - (X - StartDragPos.X);
VertScrollBar.Position := VertScrollBar.Position - (Y - StartDragPos.y);
end;
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
DragDown := false;
end;
>757 うまくいきましたです。ありがとうございます。 ソースの方は、 ・使用されていないMovePosの削除 ・宣言されてないStartDragPosをDragPosに変更 しましたが、それで正しいですよね?
759 :
デフォルトの名無しさん :03/08/12 13:53
>>719 根本から分かってない、というのが適切です。その上やりたいことがいっぱいあるんで。もうだめぽ
OwnerDrawでTListViewに項目を描画することすらできない・・・
vsReportでのCaptionは何とか追加できたんですがSubItemが描画できません
そこで、お願いがあります。
Button1をクリックするとListView1(vsReport)にOwnerDrawで
|A |B |C
|D |E |F
と描画する方法を教えてください。どのイベントで何を発生させればいいのかすら分かりません。
それさえできれば試行錯誤で他のもできるようになると思いますんで。
>>759 何がわかっていないのかわかってるならそこから調べればいいだろ?
根本からわかってないならそもそもOwnerDrawが何なのか調べろ
761 :
デフォルトの名無しさん :03/08/12 15:52
Delphiに未来はあるんでつか?
Delphiにあったとてお前には無い
Streamとかって、LoadFromStream/SaveToStream出来ますが、 2つのStreamを1つに繋げるには、どう書けばよいですか?
var src1, src2, dest: TStream; dest.CopyFrom(src1, 0); dest.CopyFrom(src2, 0);
有難うございました
>>764 0だと全部読んでくれるんですね。
>>760 文句言うなら最初から答えるなよ。知障、スレタイ読めヴォケ
767 :
デフォルトの名無しさん :03/08/12 19:13
IndyのIdHttpServerって例外が消されるんですか? エラーが知りたい場合どうすんでしょ。 エラーメッセージだけでも欲しい。
>>766 文句じゃなくてアドバイスだろ
超初心てのは何がわからないのかもわかってない香具師
何がわからないかわかっているのに調べないのはただの馬鹿
>>759 Demosディレクトリの下にOwnerlstってサンプルがあるから見てみたら?
リストビューじゃなくてリストボックスだけど、基本は同じ。
質問する方でPC JapanのDelphiの記事を見て始めた方は一言書いてください。 特典があります。
771 :
デフォルトの名無しさん :03/08/12 20:41
>>770 メール覧の厨房撃退ってなんだ? 荒らすなボケ。
ハァ? 寝ぼけてんのかこのヴぉけ失せろや
お前が厨房丸出しだろ
774 :
デフォルトの名無しさん :03/08/12 21:23
>>770 見て始めましたが何か?
どんな特典か楽しみですね。
あなたが真性厨房になる所が見られるのですか?
必死だなwwwwwwwwwwwwwwwwwwwwww
776 :
デフォルトの名無しさん :03/08/12 21:27
で、特典って何よ?
厨房撃退は荒らしです。無視しましょう。
荒れろ荒れろwwwwwwwwwwwwwwwwwwwwwwwww
>>759 各項目のCaptionの描画まではできているのですね.
リストビューコンポのオーナー描画機能は何度も拡張されたためにややこしくなっていますが,基本的にはOnDrawItemイベントのみを使うと考えてください.
(OwnerDrawプロパティをTrueにしないとこのイベントは発生しません)
このイベントは項目ごと発生します.項目の見出しやサブアイテムごとに描画イベントがあるわけではありません.イベントハンドラでは項目の見出しとそれに対応するサブアイテムの描画も同時に行います.
イベントハンドラには項目の見出しとサブアイテムの描画領域は渡されませんが,
・全体の領域(上下左右の端)→引数Rect
・各領域の上と下の端→引数Rectと同じ
・見出し領域(一番左の領域)の左端→引数Rectと同じ
・それぞれの幅→(Sender as TListView).Columns[(カラムのインデックス)].Width
これらから各領域が求められます.
なお選ばれている項目の強調表示やフォーカス(点線枠)の表示も自分で描画しなければなりません.イベントハンドラの引数Stateを参照して,選択されていたりフォーカスがあることがわかるように描画してください.
「…と考えてください」って言い切ってしまいましたが,全然違うじゃないか_| ̄|○ すいません.出直してきます(首つりAA略)
すごい初歩的な質問なんですが・・ 「'」を出力したいのですけど・・ C言語では「\」を前につければ出力できますが、パスカル言語では?
chr($27)
ここはバカばっかりか! 糞でるふぁ〜い ぷー
>>784 Delphiユーザは、「糞して、死ね」が合言葉だからね。
あれ。もっといい答えがあるのかと思った(^^;
>>780 他のイベントは通常どおりでOnCustomDrawItem等のイベントを色々設定すればいいんですよね?
TListView の CustomDraw は2つの方法がありまして,1つは DrawItem プロパティを True して OnDrawItem イベントですべてを描く方法. もう1つは DrawItem プロパティを False のまま OnCustomDrawItem, OnCustomDrawSubItemイベントで描く方法です. 後者では DefaultDraw 引数でキャプションやフォーカスの描画を任せるかどうかが決められます. 更に細かいステージが必要なら OnAdvancedCustomDraw, OnAdvancedCustomDrawSubItem イベントを使えとありますが, これらはバグっていて cdPrePaint 以外が発生していません.
''''
>>790 助け船に感謝致します.
ところで後者の方法では項目の表示領域はどうやって取得するのでしょうか?
OnDrawItemイベントと違って表示領域を引数で渡してくれるわけではないようなので
試そうとして行き詰まってしまいました.
(というか数年前に同じ場所でつまづいたきりだったのを思い出しました…)
Rect:=Item.DisplayRect(drBounds);
質問する方でPC JapanのDelphiの記事を見て始めた方は一言書いてください。 特典があります。
796 :
デフォルトの名無しさん :03/08/13 19:16
StringGrid の一カラムを非表示にして、隠しカラム的に使うようなことは できないのでしょうか?
>>796 ビューでデータ管理しようとする無かれ。
799 :
デフォルトの名無しさん :03/08/13 20:18
>>796 やれるよ、なんも無いはずのグリッドに値書けるでしょ。
>>797 一説には、ケースバイケースでは?
>一説には 憶測でしゃべんな
さすがにお盆なのでVBプログラマ様もデスマーチから解放されたかな?
>>799 なるほど。できますね。
RowCount, ColCount などは表示上の数ということですか。
実質、値をセットできる範囲の制限とはできるのでしょうか?
なんか気持ち悪いな……。
MathのInRangeと同じような感じで、 PointがRect内か否かを返す関数ありませんか? 自作は簡単ですが、最適化された関数が 標準であれば、それを使いたいのですが、 ちょっとヘルプで見当たらなくて…。 (探し方が甘い?)
>804 わっはー ビンゴです。うまく行きました。 元はAPIなんですな。
>>801 関係ないスレで暴れるなよ。アンチVB厨。
>>804 俺もちょうどこんな関数ほしかったところだ。タイミング(・∀・)イイ!!
まともなOOPLならRectangleクラスのメソッド探せば すぐ目的のメソッドが見つかるのにな。 Delphiって使いにくいね。
>Rectangleクラスのメソッド探せば そんなもんにまでクラス持ち出して・・・激しく重そうだな。
>>808 まともなOOPLかどうかは関係ないだろ。
DelphiがまともなOOPLだとは思わないが
目的のメソッドが見つからないのは
Delphiが糞だからだ。
>>810 関係あるだろ。Rectangleのメソッドは高々2・30個しかないから
Containsメソッドを探すのも容易。
それに対してPtInRectはフラットに並んだ数百数千のAPIから探し出す必要がある。
糞なのは手続き型言語全部だな。
質問する方でPC JapanのDelphiの記事を見て始めた方は一言書いてください。 特典があります。
>>809 いまや貧乏人の低スペック環境なんか見てないんだよ
未だにDel厨はクラスが重いとかいってんのか?
>>813 でもJavaはクライアントサイドじゃ使えないって結論に達してますよ。
Java?? Del厨がかく乱作戦に出たようです。
>>815 サーバサイドでは使えますが何か?
Delphiとは違ってなぁ。
>>817 >Delphiとは違ってなぁ。
使えないんですか?絶対に?本当?
Delphiはクラスにするととても重くなるのです。
マターリしる!(・∀・) ここは初心者向け質問・解答のスレっすよ! バトルしたかったらそういうスレにGo!!
なんでクラスが重いんだ? 馬鹿じゃねーの(w
>>821 禿げ同。しかし
>>809 のような勘違いさんがいるのですよ。
Delphi使いの恥です。もう氏ねと。
いやいや、Rectangleを数千個とか使うのなら、どうだろう? RecordのRectと比べて、クラスの方が当然コストはかかるだろう
お前ら無知だね。 DelphiでRectangleクラス作ったら重いだろ。 これはもう言語の構造的欠陥といってもいい。
馬鹿大増殖(プヒュー
ここはスタックとヒープの区別のつかないお馬鹿ちゃんが集うスレですか?
827 :
デフォルトの名無しさん :03/08/13 22:56
listviewで数字のソートがうまくできないんですが・・・・ みなさん取り込み中?
SortType
>>794 ありがとうございます.Del5のTListItemのプロパティ一覧には出てこないので見落としていました….
>>796 昔やりましたが
>>797 さんに賛成.
情報を表示・編集(操作)する場所と保管する場所はできる限り分離した方がよいです.Delphiのデータベースコンポはまさにその良い見本になっているのですが,Per版ユーザーに見る機会がないのはもったいない話.
>>802 RowCount/ColCountは実際の数を返すはず.
>>811 私の場合Win32日本語ヘルプ(例の古いやつ)でカテゴリ別で調べたのでそんなに苦労しませんでした.Win3.1時代に電話帳のようなAPIリファレンスを買ったものの全くといって良いほど使わなかった苦い経験が生きているのでしょうか.
832 :
デフォルトの名無しさん :03/08/13 23:54
try〜finally文について質問です。 finally節は、エラーが起きても確実に実行したいコードを 書くところだと理解しているのですが、エラーが起きてないの にtry節でExitを実行してfinally節を通過することを期待す るようなコードの書き方は正しいのですか? たとえば、 StringList:=TStringList.Create; try (処理1) if f = False then ←処理2を実行する必要がないときは抜ける Exit;←@ (処理2) finally StringList.Free;←A end; @で抜けてもAが確実に実行されることはヘルプに書いて あるのですが、エラーが起きてないのにfinally節へ飛ぶ のを期待するのは作法としていいんでしょうか?
もちろんいいよ
>>832 そうじゃないとException型を引数としたキャッチと同じになってしまう。
begin try exit; finally foo; end; end; は begin try try raise ExitException.Create; finally foo; end; except(e: ExitException) end; end; とexitは例外で、最外周に暗黙のtry excpetがあると解釈しろとかいう説明が以前あったな。
836 :
デフォルトの名無しさん :03/08/14 07:46
PC Japanを見てはじめました。 誰か解凍ソフトの作り方教えろ。
DLLを作っていて文字列形の返し方が分かりません。 誰か教えてください
>>837 dll作ったときに長々とコメントとして書いてあった気が。
>839 あれはDelphiのString型としての話ではなかったっけ? Cと互換の文字列ならまた話は違うかと。 …と、未経験者なので適当に語ってみた(;´Д`)
841 :
デフォルトの名無しさん :03/08/14 11:47
Delphi.NETって、VB.NETやVC#.NETみたいにWindows APIを使用するときには 宣言は必要ですか? それとも不要?
文字列のアドレス渡してもい、そこに文字列を入れておけばいいんじゃなくて?鉄郎
デザパタのCommandパターンのDelphiでの実例を 分かりやすく解説してくれているページってありませんか? UNDO機能を実装したいんです。
×UNDO機能を実装したいんです。 ○UNKO機能を実装したいんです。
Undo;
>>843 TObjectListにCommandオブジェクト彫り込んでいけば?
命令すんな
>>847 dcc32.exeよ、気持ちは分かるがそう怒るな。
よろしくお願いします。Delphi7です。 再生/録音のピークメーターを実装したいのですが、 どこから始めればいいのかさっぱりです。 Webでも、そういう記述ないし・・・・。 サウンドカードにピークメーターが実装されている場合 には可能のようなんですが、実装されてない場合は、 どっからもってくればいいんでしょうか。 OS標準のマイクのテストなんか、あっさりと実現してい るんですよね・・・・。 どなたか、お教え下さい。
>>849 ピークメーターって何ですか?
mmsystem.hに関しては多少知識がありますが。
>>850 ありがとうございます。
要は、入力可能最大音量を100%として、現在、何%の
音量が入力されているかを知りたいのです。
例えばWave録音するときに、一定以下の音量の場合
は録音を停止したりできればいいなぁ・・・・と。
どなたかお知恵をお貸しください。
>>853 Wave取り込んで 現在の音量÷量子化数×100とかは?
開始から10秒までにボタンを押したらこれ、20秒までに押したらこれ、のように、 時間によって判定の結果を変えたいのですが、どういう文を書けばいいのでしょうか? ご指導お願いします。
>>855 開始時刻を記録。
ボタンが押されたら現在時刻と開始時刻から経過時間を求める。
似る成焼くなり。
857 :
デフォルトの名無しさん :03/08/14 20:49
>>857 >ある程度、Waveファイルに関する知識が必要。
PCMについての知識なら解るけど、内部でもRIFFチャンク形式でやりとりするの?
859 :
デフォルトの名無しさん :03/08/14 23:03
>>858 内部では、PCMのバイナリデータの読み書き。(WAVEFORMATEX構造体)
ただ、849は再生・録音をやりたいらしいので、RIFFチャンク形式の知識も
必要になる。
Delphiで他アプリが送信したパケットを取り込んだりできますか? ようするに、他アプリのネットへの接続に、プロキシ通したいんですが。 (靴下は鯖が少ないのでダメ&SockCap32てのがあるんで。
送信「した」のに?
すいません 他アプリ(普通のネットにつなぐヤシ) → Delphiで作成したソフト → 串 → お目当てのサーバ と、こんな風にしたいんですが。
Timerの使い方がよくわからないんですが…。 どういうコードを書けばいいんでしょうか?
それ以前に何がしたいんだ?
>>865 それもそうだな、スマンスマン。で、何がしたいんだ?
すいません、863=855です。 課題(?)で音ゲーを作ろうと思っています。 判定を秒単位で三段階くらいに分けたいんです。 そのためTimerを使って、指定された時間±何秒、とかで結果を変えたいのですが、 ネットや本などに載ってないので… よろしくお願いします。
>>855 Timerは一定間隔で何かをするときに使うものだからちょっと違う。
GetTickCount使え
startTime := GetTickCount;
ってやっといて
ボタン押されたら
(GetTickCount - startTime) div 1000
で経過時間が得られる
∧,,∧
ミ,,゚Д゚彡
ミ つ旦)~~
〜と,,,~),,~)
Timerは使わなくてもいいのでは??
プログラム起動時に
TTime型の変数にNowで時間を取得しておいて
あとはボタンを押した時に
Nowで時間を取得して、
起動時からどれくらい時間が経ったかを
判定する。
という処理の流れになるのではないでしょうか。
って、
>>868 さんとかぶったな。
精度が必要ならNow関数より
GetTickCountがいいっすね。
どうもありがとうございます!それで進めてみます。
接続されたライブカメラや、デジカメのプロパティを開きたい のですが、どうすればいいでしょう。。。 通常のコンパネのスキャナとカメラからは見ることのできない プロパティ画面がカメラに存在するようなのですが・・・・。 あとコンパネのマウスのプロパティとか、キーボードのプロパ ティはShellApiを使って開けるのですが、そのなかでも特定の タブを選択した状態で表示させることってできるんですかね。
>>871 systemディレクトリの
*.CPLを開けば出来る
>>872 全部開いてもでてきませんですた・・・・
デバイスドライバのDLLとかに入っているのかな・・・
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
>>857 ありがとうございます!
まだ観てないのですが、取り急ぎお礼まで。
Wave関連はコンポーネントがあるので、その知識は
必要とはしないです。とにかく、入力音量の値だけ
持ってくることができれば、それにあわせてTrueと
Falseを設定してあげれば済むので・・・・。
また質問させてもらうかもしれません。よろしくです。
unitAで宣言しているレコード型変数を引数にして、 unitBにある関数に渡すことは出来ますか? unitBでレコード宣言したら [エラー] edit_form.pas(313): 'unitA.Thogehoge' と 'unitB.Thogehoge' には互換性がありません と出たんです
var unitB.Thogehoge rec;とユニット名を修飾するか 'unitB.Thogehoge' の定義を削除。
879 :
デフォルトの名無しさん :03/08/15 18:13
usesで指定してあるMessagesとかの中身というか、定義をみたいのですが・・・・
質問です。 Delphi6Personal版のコードエディタで、行末でカーソルを→に入れたら 次の行頭に行かずさらに右に進んでしまうのですが、 こういったDelphi独自(?)の操作性には慣れるしかないのでしょうか? 設定でよくあるエディタのように行頭に行くようにしたいのですが…
ふと #define begin { #define end } を思い出した。
は?
>>886 別の言語も知っておいた方が良いぞ。
特にDelphiはC言語知ってると世界が広がる。
delphiのヘルプに他のヘルプのキーワードを追加したいんですがどうにかやる方法ありますか? delphi6 personalです
>>887 C言語はまったくわからないけど
Borland C++を使ってみたほうがいいかな?
>>889 WindowsAPIの宣言読替とか位は出来るようになってた方が楽ちん。
>>890 マジな話Cもpascalもまったくわからん。
一から始めるならどっちから始めるのがいいとおもう?
Borland C++ Compiler 5.5
Borland Delphi 6 Personal
よくわからんから薦めてくれたほうを使ってみる。
>>891 何がしたい?
単なる勉強ならC/C++を、
GUIなツール等を作りたければDelphiかC#Builderがいいよ。
無料版がないから
>>892 何がしたいかって言えば仕事ではなく勉強かな。
今落としていてすぐに使えるのはBorland Delphi 6 Personal
今から落としてみようかと思ってるのはBorland C++ Compiler 5.5ってとこです。
何か実用レベルの物を作るとかじゃなくてまずやってみながら覚えていきたいというレベルの話しなのですが
タダでできるもので勉強してみたいのでBorland C++ Compiler 5.5のほうがいいですか?
Delphiは書籍も出てないしC++の方は解説書も沢山出ているのでわかりやすいのかもしれないですね。
どうもCは難しそうなんで敬遠してたんだけどいまからやってみます。
どうもでした。
∧,,∧ ども。 ミ,,゚Д゚彡 ミ つ旦)~~ 〜と,,,~),,~) BigエンディアンやLittleエンディアrン 周りの処理をしているのですが Result: WideString UpByte, DownByte: Byte; Result[i] := UpByte + DownByte; や Result[i] := DownByte + UpByte; こういうことをやりたいのですが、 上記コードではうまくいきません。 どうやったらうまく上位バイトと下位バイトとで WideStringに値を入れる事ができるでしょうか? よろしくお願いします。
∧,,∧ ミ,,゚Д゚彡 すまそ。解決しまつた。 ミ つ旦)~~ 〜と,,,~),,~) Result[i] := WideChar( (UpByte) + (DownByte) * $100 ); このようにしたらよいようです。
htonlとか使えよ。
∧,,∧
>>898 ミ゚Д゚,,彡 ん?俺?
ミ つ旦)~~
いちいちAA貼るなよウザギコ
>>871 DirectShowで入力フィルタのプロパティページを開くのはどう?
>>897 8bitシフトとかじゃあかんの?
data = ((data and $ff00) shr 8) or ((data and $00ff) shl 8);
>>884 thx!
いくらか触った感じだとDelphiはプログラム自体の設計はいいのに
エディタの操作性が微妙だから7でそのへんが良くなってるといいんですが…。
905 :
デフォルトの名無しさん :03/08/16 13:11
TPageControlを使っているので、すが、 タブの高さが小さくて選びにくいです。もう少し大きくするには どうしたらよいでしょうか?
TabHeight
>>906 ありがとうございます
>>907 今回は
>>906 さんの方法を利用させていただきました。
頂いたアドバイスは、別の機会で参考にさせていただきます。
ありがとうございました。
・・・ってネタレスなんか期待してねーんだよ!! 真面目に答えろ!
TabHeightを30ぐらいにして、大分いい感じになりました。 逆に0にしてもタブが非表示にはなりません。 1にすると変な感じですし。タブを非表示にすることは、 どうすればいいでしょうか
少しはヘルプ見ろよ。
>>913 インストールしたフォルダの中に、ヘルプファイルがありました。
ありがとうございました
フォームのタブクリックしてF1でヘルプが出るよ
そりゃあるさ
かちゅ〜しゃで、
>>3 みたいなところにカーソルを合わせると、
フォームじゃない、コメントのような枠?が出てきますが、
それをするにはどうすればいいですか?
>917 THintWindow
920 :
デフォルトの名無しさん :03/08/16 18:38
921 :
デフォルトの名無しさん :03/08/16 19:00
920さんに便乗なんですが OCXってActiveXとどんな関係があるのですか? ネットで説明探しましたが概念が全然わかりません VB用(としか書いてない)のOCXをdelphiで使うことは出来るのですか? 本当に何がなんだかわかりませんのでおながいしまつ
>>920 なんかエラーでも出るの?
何事もなく取り込めて使えたけども。(Del6 Per)
925 :
デフォルトの名無しさん :03/08/16 20:11
Delphi6Personal版で、 program FirstCode; begin writeln('Hello!'); readln; end. ってプログラムがちゃんと動かなかった。なぜ?
エラーメッセージは?
>>925 >readln;
胡散臭い。エラーメッセージは?
プロジェクトを作るとき [ファイル|新規|その他]でコンソールアプリ選んでる? これやらないとエラーになるかも。
929 :
デフォルトの名無しさん :03/08/16 20:19
>>925-926 「モジュールUnit1でエラーが発生しました。TForm1クラスの宣言が無いか間違ってます。」
です。
>>924 当方win2k + Delphi5pro
1.WhoisCom.dllを\WINNT\SYSTEM32のシステムディレクトリにコピー
2.コマンドラインから Regsvr32 WhoisCom.dll
3.Delphi起動 [コンポーネント]→[ActiveXコントロールの取り込み]
でリストにWhoisComが出てインストールボタンで出来るんですよね?それらしいのが無い。
追加ボタンでwhoiscom.dllを直接指定してみたけど出てこない。
何か間違ってますか?
>>931 [プロジェクト]→[タイプライブラリの取り込み]
>>932 うまくいきました。
有難うございました。
AのalignをLeft,BをBottomにしたら、 ┌──┬──────┐ │ │ .│ │ │ .│ │ A │ Form .│ │ │ .│ │ │ .│ │ │ .│ ├──┴──────┤ │ │ │ B │ └─────────┘ になったんですが、 ┌──┬──────┐ │ │ .│ │ │ .│ │ A │ Form .│ │ │ .│ │ │ .│ │ │ .│ │ ├──────┤ │ │ .│ │ │ B .│ └──┴──────┘ のようにするにはどうすればよいですか?
+−+−+ |A|B| +−+−+ として(パネルAはLeft, BはClient) Bの上に +−+ |B1| +−+ |B2| +−+ を乗せればいい
>>934 多分
bのparentをFormとAがあるパネルに移動する
色々やってる厨です。 delhpi6 Personalです。 要は実行時に色々ellipseやrectangle図形を描いてそれをメタファイルとして 保存なりコピーしたいのです。 なるべく簡単な実現方法をしりたいですけど。 やってみたのは imageコンポーネントに image1.canvas.ellipse(x,y,x,y)なんて描画したのを emf/wmfファイルとして保存 あるいはクリップボードにコピーするのは image1.Picture.Metafile.SaveToFile('c:\hi.wmf'); clipboard.Assign(image1.Picture.Metafile); (image1.Picture.Metafile.assign?) なんて気軽にやったところで無理です。三時間ばかり格闘してますが var MetaFile : TMetaFile; MetaCanvas : TMetaFileCanvas; という ヒントらしきものが今漂流中に手に入ってます。 だれか助けてくだされ
>>938 Image1.Picture.SaveToFile('a.bmp');じゃだめなんか?
>>938 順番が逆。図形を描いてからメタファイルにするんじゃなくて、
最初からメタファイル作っといてその上に描く。
MetaFile := TMetaFile.Create;
MetaCanvas := TMetaFileCanvas.Create(MetaFile, 0);
MetaCanvas.Ellipse(x, y, x, y); { 問題の図形を描画 }
MetaFile.SaveToFile('higedance.wmf'); { ファイルに保存 }
Image1.Canvas.Draw(0, 0, MetaFile); { 画面にも出したければこう }
MetaCanvas.Free;
MetaFile.Free;
Win2k,XPだとTEdit等の文字列がUnicodeで9xはSJISという噂は本当ですか? だとするとSelStart等を使うコードをOSごとに切り替えるなんて糞面倒くさいことをするんですか? これはひどいDelphiの限界ですね。
>>942 プ 見事に引っかかってやんの
それはVB厨吊るための偽情報ですよ。
944 :
デフォルトの名無しさん :03/08/17 04:10
もう少し待ってれば>941さんのスマートなコードにありつけたのに… Image1.Canvas.Draw(0, 0, MetaFile); { 画面にも出したければこう } ってのを image1.canvasに対して同じように image1.Ellipse(x, y, x, y); { 問題の図形を画面に描画 } ってやってしまってました。 図形の数だけゴチャゴチャでなんて汚い、 と思って二つのimage1.canvasとmetacanvasをTlistにいれてみてキャストしてメソッドだしたり assignかな、とかやってみたけど失敗で諦めてました。 本当に参考になります。 までも、自力で推測して近いとこまでいけたのは嬉しいかな。 >939さんありがとうございます。
945 :
デフォルトの名無しさん :03/08/17 04:10
でも次の問題が… 描いたmetacanvasの一部領域のみを、保存したいとき、 もうひとつ保存用のstoreMetafileというのを作ってそこでmetacanvasからcopyrectして 保存という案で storeMetaFile := TMetaFile.Create; storeMetaFile.Height := 50; storeMetaFile.Width := 50; storeMetaFile.Enhanced:=true; storeMetaCanvas:=TMetafileCanvas.Create(storeMetaFile, 0); storemetaCanvas.Pen.Color:=clblack; storeMetaCanvas.brush.style:=bsClear; sourceRect := Rect(0,0,50,50); MyRect := Rect(0,0,50,50) storeMetacanvas.CopyRect(MyRect,metacanvas,sourceRect); //eMFの書き込み storeMetaCanvas.Free; storeMetaFile.SaveToFile('C:\dtert.emf'); で中身なしのemfファイルができてしまうのです。 これも二時間以上googleとかで調べてもわからない…。 copyrectはビットマップのみなのかなとか諦めムードです。
>>943 Del7でそういうコードを書いたよ。SelStartやくにたたん。
947 :
デフォルトの名無しさん :03/08/17 09:57
Visual Basic.net とか Visual c++.net はどこで入手できるのでしょうか? Visual Basic5,0 はマイクロソフトのHPでダウンロードできたのですが
>>947 ちょっと大きめのパソコンショップへ。
ダウンロード出来たって言うのはVB5CCEの事かい?
>>947 Del厨ならDel厨らしくDelphi使いなよ。
950 :
デフォルトの名無しさん :03/08/17 10:13
>948さん ありがとうございます。VB5はCCEの事です。 パソコンショップ行って来ます。 >949さんもありがとうございました。
まともな解答者が居ないのに次スレなんて要るのか?
スマン ちょっとHDDは壊れるわ納期は次々くるわで、答えてられんかったんよ。
950です。パソコンショップ逝って来ました。 おかげでVisual c++.NET の予約できました。 でもよく見るとここDelphiスレだったんですね(汗 お決まりらしいので新規にスレッド作成しておきました。
KylixのCLXで作ったヤツを、 WinのDelphiのVCLへ、 移植は簡単に出来ますか?
DelphiのCLXなら殆ど手間はかけなくて良いと思うが?
>>945 メタファイルってのは描画の手順を記録したものだから、
ビットマップみたいに一部分だけ切り取るなんてことはできん。
うまくいくかどうかわからんけど、クリッピングして描いてみるってのはどう?
var rgn: HRGN;
rgn := CreateRectRgn(0, 0, 50, 50);
SelectClipRgn(MetaCanvas.Handle, rgn);
{ ここでMetaCanvasにあんなことやこんなことを… }
SelectClipRgn(MetaCanvas.Handle, nil);
DeleteObject(rgn);
962 :
デフォルトの名無しさん :03/08/17 20:49
>960 ソースは先にクリッピングしておいてから、そこに描く、という感じなんですよね。 ありがとうございます。でもとりあえず描いてしまったものの一部を切り取りたい んですよね…。 >描画の手順を記録 なんですよね。!!てことではっきり解決方向が見えました。 実行時、描画した順番(コード)を何らかの方法で再現させればいいのでは、と。 ユーザーがフロントエンドで円や四角形を描いたときの内部コードをそのまま再現させる という感じ。 一番楽なのは、そのコード丸ごと文字列に入れて、あとでそれをそのまま実行してくれたら 、と夢のような。 極端なこと言ってしまえばユーザーがエディトボクスに、デルファイコードそのままの metafile.ellipse(0,0,60,80)って入力して「実行」なんてコマンドボタンを押して描画する方法 があれば、一瞬にして楽に解決なんだけど。
'ellipse,0,0,60,80'を解釈・実行するなんて簡単だと思うけど。 全命令に対応するのは面倒だけど。
>>962 メタファイルってのは正にその描画した順番を再現する仕組なのだが。
メタファイルをもう一個用意して、クリッピング領域を指定してから
元のメタファイルを再生すれば切り抜きになるんでないの。
次スレの季節だがこのまま全滅ってことになりそうだな。
Delphiでグラフィックをいじるなら、SOFTBANKから出ている 「Delphi Graphic Secrets」という本がサンプルコードなどが沢山のっていて とても参考になる。著者はかの中村拓男氏。
969 :
デフォルトの名無しさん :03/08/20 23:37
アハハハハハハハハハハハハハハハハハハハハハッハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ ハハハハハハハハハハハハハハハハハハハハハハハハハハ
970 :
デフォルトの名無しさん :03/08/22 12:33
フリー版delphiで作ったソフトとかソースって 商用利用じゃなきゃ公開、配布しても大丈夫?
>970 2ch専用ブラウザを何と心得る。
うめ
>>961 別件で質問しようとしていたので(言語にかかわらないのでここではしません)
遅れて気づきましたが、そういうアドインがでていたんですね。
感謝です!
そして、亀レススマンです…
あ
と
公式DirectXユニットを作ってくれるようにボーランド様へ投書してくれる人募集!
作ってくれたとしても、どうせまた中途半端なのができるだけさ。
というか、敵はLongHornに向けて頻繁にアップデート繰り返してるからねえ
>>979 それでも無いよりゃマシざんす。
出来ればデータはリソースから読めるヤツ、キボンヌ(死語)。
つーか、必ずリソースから読めて。
おながい(死語)。
>>981 Stream経由で読めるようにすれば解決
掲示板に、 「exeのサイズがでかいので何とかしてくれ」、 「VBは小さいのに」、 とか書いてあるとガックリ来ない? 「VBやってろや」って思っちゃう。
C++Builderは小さいのに・・・ とか
ランタイムも配布すりゃいいじゃん。 「VBもこうやってます。」とか言って。
いや、書き方が悪かった。 「delphiプログラミング系」の掲示板(オレのところでは無い)に、 delphiを始めた人からの書き込みで ってこと。
>>986 ああ、そういうことね。
自分しか使わないようなツールとかなら、
実行時パッケージを使って構築にチェックしる。
で済むんだけどね。
UPX で圧縮してやればいいじゃないか。 それくらいのサービスは手間じゃないだろ
こっちもまだ生きていたのか。
世の中の人の大半は、exeデカイ=メモリ喰い ってことだろう。
>>983 そいつは、exeのサイズがデカイことで、
本当に実害を被っているのか小一時間問い詰めたい。
いいたいだけちゃ(ry
.NET もメモリ食いなんだけどね。
exeでかいって言っても、普通に組んでれば10Mとかあるわけでもないし。 別に配布の問題も無いと思うんだがな。
いや、つい絵を沢山入れちゃうとそうなっちゃう時もなきもしもあらず
問1 貴方が一番嫌いな国はどこですか?
ぬるぽ
∧__∧ i i ト──┤ |::::::::::::::::| javaと一緒にさよなら !::::::::::::::::! イi゙、:::::::ハ!ヽ |゙'i `i'´ /i i | | .| i _ i' i .| | i ,,r ''~:::::::゙''ヽ、 i キ====i i /::::::::::::::::::::::::::\ i. /::::::::::::::::::i i, /》:::::::::::::::::::::::::::::::《i {_i::::::::::::::::::::::ヒ=ュ i'":::::::::::::::::::::::::::::::::::゙i !~i::::::::___::::::::|сg---i::::::::::::::::::::::::::::::::::::::::::i `'「 ̄ ||  ̄i' ヾ::::::::,':::::::::::::::::::::::::::::::::::::::::::| | || ,' `'''y:::::::::::::::::::::::::::::::::::::::::::::|ヽ !. i i i' ,':::::::::::::::::::::::::::::::::::::::::::::::|::::゙、 i. i .| | i:::::::::::::::::::::::::::::::::::::::::::::::::ト:::::゙、 ├‐┤.|_| |::::::::::::::::::::::::::::::::::::::::::::::::::|i \:i ! !. | i .|:::::::::::::::::::::::::::::::::::::::::::::::::::リ ´ |,,,,i | .,' i、:::::::::::::::::::::::::::::::::::::::::::::// ├'メ, |__i ゙\:::::::::::::::::::::::::::::::::::/ ' !、,,) .!,,」 >--、_,,r-r─‐'''<
もうもらっとこうか。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。