1 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:18:00 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その42 pc11.2ch.net/test/read.cgi/tech/1180613145/ <過去スレ> DelWiki避難所 delwiki.info/?Delphi 関連の過去スレッド
152 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 23:01:32 ] 座布団一枚... 食え
153 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 05:06:14 ] >>139 OLE Drag&Drop >>141 それがいいと思う。
154 名前:デフォルトの名無しさん [2007/08/11(土) 13:33:07 ] >>150 だから困るんですよ なんで、部分一致検索じゃないかと・・・
155 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:30:58 ] >>154 別に誰も部分一致検索じゃないなんて言ってないけど
156 名前:デフォルトの名無しさん [2007/08/11(土) 18:29:36 ] いやだから、部分一致検索じゃないから、困ってるんです。
157 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:50:48 ] ドキュメントのない開発環境はドキュンだな・・・
158 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:06:02 ] >>156 はぁ?部分一致検索じゃん 勝手な思い込みで困ると書かれても困るんですけど 第一プラグインで解決したんじゃないの?じゃあもういいだろ
159 名前:デフォルトの名無しさん [2007/08/11(土) 21:02:44 ] >>158 プラグインで問題は、解決はしましたが、 うちの2007では部分一致ではなく、前方一致です。 解せません。
160 名前:デフォルトの名無しさん [2007/08/11(土) 21:03:30 ] すみません、2006でした。
161 名前:デフォルトの名無しさん [2007/08/11(土) 21:05:31 ] 二つの環境で試しましたが、両方とも、前方一致検索でした。 なんで、デフォルトでこんな不便な仕様なんだろう・・・
162 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:23:05 ] 画像を任意の角度だけ回転させるような手続き Rotate(TImage, kakudo) みたいなのは標準でありますか?
163 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:30:02 ] ない。
164 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:31:11 ] そうですか じぶんで描くしかないみたいですね
165 名前:デフォルトの名無しさん [2007/08/11(土) 22:37:48 ] コンポーネントさがす
166 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:42:58 ] GDI+を使う
167 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 23:15:38 ] TImage は画像じゃないよ
168 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 10:29:47 ] www.asahi-net.or.jp/~HA3T-NKMR/DGS/
169 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 12:08:42 ] TBigBitmapCanvas って塗りつぶしうまくいかないよね。
170 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 13:13:58 ] 回転にCanvasはつかわないしょ。 普通に補間関数書いて、座標変換するだけ。
171 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 15:50:19 ] >>170 > 普通に補間関数書いて それが意外と難しい罠。
172 名前:デフォルトの名無しさん [2007/08/12(日) 23:47:28 ] Threadの扱いで困っています。 Thread内でエラーが出た時に、ユーザーにしらせたいのですが、 どうするのがよいのでしょうか? 今は、Threadは、ひとつだけなので、 メインスレッドで、FThread: THogeThread; として、 サブスレッドの変数をもたせ、 開始時は、 FThread := THogeThread.Create(False); とし、サブスレッド停止時には、スレッドの終了を待つように、 procedure TMainThread.StopThread; begin if Assigned(FThread) then begin FThread.Terminate; FThread.WaitFor; FreeAndNil(FThread); end; end; としています。
173 名前:172 [2007/08/12(日) 23:48:21 ] そして、サブスレッド内で、エラーが起きた場合 Synchronize で、メインスレッドでエラーをポップアップし、 Terminate; を呼び出しています。 しかし、こうすると、メインスレッドから、停止処理(StopThread)を呼ぶのはよいのですが サブスレッドで、エラーが起きた場合は、 FThread が、終了したにも関わらず、FThreadが、保持された状態になります。 次に開始したときは、また生成してしまい、メモリリークになります。 こういうときはどうするのが良い方法なのでしょうか? それとも、FThreadを持たない方法がよいのでしょうか? (その場合、どうやってスレッドの終了を待てばよいのか……?)
174 名前:172 [2007/08/12(日) 23:49:04 ] あ、よく考えたら、 サブスレッド開始時に、StopThread呼べばいいのか・・・
175 名前:172 [2007/08/12(日) 23:55:04 ] もしくは、スレッド一個なら、最初から生成しておく方法でもいいですね。 メインスレッド(メインフォーム)生成時に、生成しておいて、 SyncObj.TSimpleEvent を使って、イベント待ちにして、 スレッド開始時には、TSimpleEvent .SetEvent;する。 スレッド停止時は、フラグを立てて、ループを抜け、イベント待ちにもどる、と。 で、メインスレッド破棄時のみ、TMainThread.StopThread を呼び出すと。
176 名前:172 [2007/08/13(月) 00:17:03 ] 結局、 FreeOnTerminate = True; を使って、スレッドを自動的に破棄するようにしたのですが、 アプリケーション終了時に、メモリリークが起きてしまいます。 (ReportMemoryLeaksOnShutdown := True;で確認) TMainThread.StopThread;のように、スレッドの解放を待つにはどうしたらよいのでしょうか?
177 名前:172 [2007/08/13(月) 00:27:39 ] >>176 に関して、メインスレッド終了時(Destory)に、 if Assigned(FThread) then begin FThread.Terminate; FThread.WaitFor; FThread := nil; end としていたのですが、 スレッドを起動した状態で、終了すると 「スレッドエラー:ハンドルが無効です。 (6)」というエラー と言われて、正常に終了できませんでした。 たぶん、Terminateで、スレッドが破棄されているからだと思います。 そこで、 if Assigned(FThread) then begin FThread.FreeOnTerminate := False; FThread.Terminate; FThread.WaitFor; FreeAndNil(FThread); end; としたところ、無事に正常に終了できました。 ありがとうございました。 でも、FThreadを持たず、複数Createする時はどうやって待つんだろ……
178 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 01:53:30 ] TTabControlのDragModeをdmAutomaticにすると タブをクリックしても選択されないのは仕様ですか? そうするとOnMouseDownやOnMouseUpイベントも呼び出されてないみたいだし、 自前でやるしかないんですか?
179 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 02:09:09 ] 自前でやるのがプログラミングなんだぜ
180 名前:178 mailto:sage [2007/08/13(月) 02:17:21 ] >>179 そうですか・・・><
181 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 03:33:12 ] Delphi2007でTNT Unicode Control使うにはどうしたらいんでしょ? 無償版はだめっぽいし、最新の有償版ですら パッケージ C:\Program Files\tmssoftware\TMSUnicode\Packages\TMSUnicodeDED2006.bpl を読み込めません。 指定されたモジュールが見つかりません。. ってエラーがでる。(ちゃんとあんのに)
182 名前:デフォルトの名無しさん [2007/08/13(月) 10:49:40 ] >>181 パスとおせよ。
183 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 13:18:40 ] >>182 すみません、通ってるようです。
184 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 14:58:38 ] >>172-177 Threadから自前のメッセージをポストしてメインスレッドでユーザーに知らせればいいの では? そしてその時にエラー処理なども一緒にすれば、Threadの方はシンプルにできる と思うんだけど。
185 名前:デフォルトの名無しさん [2007/08/13(月) 16:13:30 ] rsdn.ru/article/delphi/Handlers.xml ページみてるんですが、 type TCalcFunction = function(const A, B : integer) : integer; function Add(const A, B : integer) : integer; begin Result := A + B;end; procedure Example; var CalcFunction : TCalcFunction; begin CalcFunction := Add; ShowMessageFmt('CalcFunction(2, 3) = %d', [CalcFunction (2, 3)]); なんでこういうふうにわざわざやるんでしょうか? どういうときにこういうのを使うんでしょうか?
186 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:25:16 ] いや別にいやだったら本人の好きなようにやればいいんじゃないの?
187 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:26:25 ] >>185 自由に関数を切り替えるためじゃない?例えば var
188 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:28:05 ] >>185 理由はそのページの説明文に書いてあるぞ
189 名前:187 mailto:sage [2007/08/13(月) 16:37:52 ] ごめん、途中で送信しちゃった。 var SomeFunction : array[0..3] of TCalcFunction; として SomeFunction[0] := Add; SomeFunction[1] := Sub; SomeFunction[2] := Multi; SomeFunction[3] := divi; と代入すると(それぞれの関数は宣言してあるとする)。 SomeFunction[a](2, 3) でaの値を変えるだけで関数を切り替える事ができる。
190 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 16:43:46 ] 関数ポインタの使いどころって意味なら C言語の例だけどqsortで検索してみたら。
191 名前:デフォルトの名無しさん [2007/08/13(月) 17:11:48 ] >>185 えーそうなんですけ? >>189 条件分岐を不要にできるんですか。これは使ってみたいです。 >>190 かえってわかんなくなってしまいました>< ありがとうございました。
192 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2007/08/13(月) 22:29:46 ] >>189 Delphiだと「手続き型」になりますがTListやTObjectListのSortメソッドがそれに相当しますね. サンプルを作ってみたのですがちょっと長すぎるのでぐぐってみました. (ほかのサンプルは Delphi TList Sort でぐぐるとよいかも) www.smart-bbl.info/CQN/FAQ/delphi/d0009394.html TList.Sortでは手続き型を使うことによって「データをどういう順番に並べ替えるかを決める処理と, その条件に従って実際に並べ替える処理とが完全に分離」しています. どんな形式のデータを並べ替えさせる場合でも,どんな順序で並べ替えさせる場合でも, その条件に従って並べ替える方法はほぼ決まっているので, 結果としてリストを使うプログラマーは前者のコードを書くだけで済むようになり, プログラマーが毎回並べ替えのコードを書くという無駄な作業から解放されるのです. ちなみに上のページのサンプルコードではスタッフを年齢順にソートしていますが名前順にソートすることもできます. function StaffSortCompareByName(Item1, Item2: Pointer): Integer; begin Result := AnsiCompareText(PStaff(Item1)^.Name, PStaff(Item2)^.Name); end; procedure TForm1.Button2Click(Sender: TObject); begin StaffList.Sort(StaffSortCompareByName); end; ボタン1を押すと年齢順でソートされてボタン2を押すと名前順でソートされます.実質1行で.
193 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 23:27:52 ] 一番身近な関数ポインタは「イベント」ですわ。OnClickとか。
194 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/14(火) 01:26:03 ] ___________ ∧,,∧ /こんな風にすると ミ,,゚Д゚彡 < おもしろいよ。 ミ つ日 \ 〜ミ,,,,,, ,,ミ  ̄ ̄ type TCheckLineFunction = function(Line: String): Boolean; TStringListFunction = record FStrings: TStrings; constructor Create(Strings: TStrings); procedure DeleteLine(f: TCheckLineFunction); end; constructor TStringListFunction.Create(Strings: TStrings); begin FStrings := Strings; end; procedure TStringListFunction.DeleteLine(f: TCheckLineFunction); var i: Integer; begin for i := FStrings.Count - 1 downto 0 do begin if f(FStrings[i]) then begin FStrings.Delete(i); end; end; end;
195 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/14(火) 02:14:32 ] ___________ ∧,,∧ / ミ,,゚Д゚彡 < 以下、使い方。 ミ つ日 \ //空行を判定している function CheckEmptyTextLine(Line: String): Boolean; begin if Line=EmptyStr then Result := True else Result := False; end; var StringListFunc: TStringListFunction; begin StringListFunc.Create(OutputMemo.Lines); StringListFunc.DeleteLine(CheckEmptyTextLine); end; 関数側で、Lineの内容を判定して、判定がTrueなら 行削除する処理を行えるわけです。
196 名前:デフォルトの名無しさん [2007/08/14(火) 11:39:22 ] 指定のアプリーションに、アクティブにせずに、キー入力を送りたいのですが、 可能でしょうか? 可能ならば、どのようにやったらよいのでしょうか? 検索単語でもいいので、ご享受ください
197 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 11:39:43 ] 最近は1つ質問すると10回答が来たり、自問自答がはやってるのか? いやぁ、夏枯れですねぇ。 よきかな、よきかな・・・
198 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 13:58:05 ] >>196 sendmessage
199 名前:デフォルトの名無しさん [2007/08/14(火) 14:51:59 ] >>198 サンクソ。 PostMessageと、SendMessageっぽいですね。 調べてみます。
200 名前:デフォルトの名無しさん [2007/08/14(火) 16:22:30 ] >>194 動かしてみたらなるほどおもしろいと思いました。 ありがとうございました。
201 名前:デフォルトの名無しさん [2007/08/14(火) 16:32:17 ] 最近は1つ質問すると10回答が来たり、自問自答がはやってるのか? いやぁ、夏枯れですねぇ。 よきかな、よきかな・・・
202 名前:デフォルトの名無しさん [2007/08/14(火) 20:44:16 ] こんにちは。 TnTコントロールとOpenXMLにパスを通してコンパイルすると、 以下のように、言われてコンパイルが通りません。 なんとか、通す方法はないでしょうか? [Pascal 致命的エラー] TntClasses.pas(29): F2051 ユニット WideStrings は異なるバージョン WideStrUtils.WideQuotedStr によりコンパイルされています
203 名前:202 [2007/08/14(火) 20:51:30 ] わかりました。 TnTから利用している VCL の WideStrUtils と、 OpenXML内の WideStrUtils がファイル名がかぶっているためでした。 Delphiは、ファイル名が、同じだと不都合でるんですね・・・ 勉強になりました
204 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 00:32:27 ] また自問自答か・・・
205 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 00:45:58 ] 自ら成長する いいことじゃないか
206 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 01:02:33 ] ファイル名が同じだと、dcuファイルの出力先で上書きされるんじゃないのか?
207 名前:デフォルトの名無しさん [2007/08/15(水) 02:45:07 ] Delphi and Programming d.hatena.ne.jp/wkmghn/ 今の時期にDelphi入門記事が・・・ よきことです。
208 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 05:07:50 ] まあ投げっぱなしで二度と来ない奴よりは数千倍マシだな
209 名前:デフォルトの名無しさん [2007/08/15(水) 09:57:37 ] Delphi6だとTLabelのcolorプロパティを設定すれば即座に反映されますが Delphi2007だと設定しても反映されません。 Delphi6で作成したプロジェクトをDelphi2007でコンパイルして実行すると 設定した色になりますが、最初からDelphi2007で作成するとコンパイルしても 色が灰色のままです。 (;_;)
210 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:59:21 ] やったじゃん!
211 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:23:46 ] >>209 VCL ソースでは property Color nodefault; になってるね。 コードで変えても変わらないわけだ。
212 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:26:01 ] ありゃ核爆
213 名前:デフォルトの名無しさん [2007/08/15(水) 18:43:53 ] 各Windowの位置の保存は、みなさん、どう実装していらっしゃるのでしょうか? 既存のコンポーネントを使っておられますか?
214 名前:デフォルトの名無しさん [2007/08/15(水) 18:44:51 ] Torryのページに、そのまんまのカテゴリがありました。 Components > Forms > State savers. Torry's Delphi Pages www.torry.net/pages.php?id=96 その中のこれが、使いやすそうです。 ありがとうございました。 DelphiDabbler.com || Window State Components - Save and restore window size, state and position www.delphidabbler.com/software?id=wdwstate
215 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 20:10:50 ] 自問自答って、あらたな拡販の手口? あほすぎるのは、お笑い系?
216 名前:デフォルトの名無しさん [2007/08/15(水) 20:16:29 ] >>214 のコンポーネントは、けっこう便利そうです。 普通に使う分には、TPJWdwStateをFormにはっつけて、 AutoSaveRestore を Trueにいておけば、 自動的に、終了時にサイズ、位置、WindowStateが .ini に保存され、 起動時に復元されます。 (レジストリ版のコンポーネントもあります) 簡単な用途なら、コードを書く必要がないのが便利です。
217 名前:172 mailto:sage [2007/08/15(水) 20:18:38 ] >>184 なるほど!メッセージを投げるのは思いつきませんでした。 簡単にできて、すっきりしますね 参考になりました。 サンクス。
218 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 20:25:02 ] それをラップしたのがSynchronizeなわけで。 エラー通知に使っちゃいけないという理由はない。
219 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 22:38:48 ] >>216 簡単な用途ならこーどでいいんでないかい?
220 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/16(木) 00:32:02 ] _____________ ∧,,∧ />>213 さん ミ,,゚Д゚彡 < 漏れは自作 U つ \ @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪ DelFusa Library - Delphi OpenSource - DelFusa Floor delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html の、FormPosition.pas
221 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 00:34:23 ] 簡単な、それでいて反復性のあるコードをまとめたのがコンポーネントだし、 どんな用途でも使っていけばいいんでないかい? てか自問自答に恨みでもあるかのごとく噛み付いてるのがいるけど、 ここのスレタイと>>1 を理解できてないようじゃ初心者以下だよな いくら下らないことでも、それに引っかかる人間が今後いるかもしれないし、 解決方法を残しておくことは決して悪くない、むしろいいことだと思う ただ、ここに来る人間は過去ログ読まない人の方が多そうだが…
222 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 00:35:37 ] また自問自答してるよ
223 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 03:36:51 ] 超初心者が枯渇したため、これからこのスレは自問自答を装った Tips スレになりそうだな。www
224 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 03:43:28 ] それはそれで
225 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 05:20:50 ] みじめすぎ
226 名前:悲劇のヒロイン mailto:sage [2007/08/16(木) 05:26:32 ] ありがとう
227 名前:デフォルトの名無しさん [2007/08/16(木) 08:21:26 ] >>VCL ソースでは property Color nodefault; になってるね。 >>コードで変えても変わらないわけだ。 なぜこんな事をしたのでしょうか? Delphi6 と 2007 のソース比べてみましたが、かなり変更されていますね ソースを見ても ThemeServices なんて知らないものがいっぱいだし ヘルプは英語で、お手上げです。 せっかく2007入れたけど Del6 を 入れ直します (;_;)
228 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:32:18 ] おめでとう
229 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:43:22 ] property Color nodefault; には D7 の段階から変更されているよ 何か勘違いしてないかな?
230 名前:| mailto:sage [2007/08/16(木) 09:01:45 ] LabelのColor property使ったことなかたから気付かなかった。 よくわからんだが、意味のないものになってるの? >>220 サンクスです。 Delフサさんのページあったのですね。 参考にさせてもらいます。
231 名前:デフォルトの名無しさん [2007/08/16(木) 11:10:28 ] >property Color nodefault; には D7 の段階から変更されているよ 何か勘違いしてないかな? そうあって欲しいです。Del7はアンインストールしてしまったので すぐに解りませんが、後で試してみます。 >LabelのColor property使ったことなかたから気付かなかった。 私も今まで色には無頓着だったのですが、今回のシステムは先行したVB のプログラムで色を豊富に使っているため、絶対使わないと駄目なんです。 まさかこんなところではまるとは (@_@)
232 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 11:24:21 ] はまってごらんよ、あ〜の〜角を〜
233 名前:DEKO ◆v8todlW3ks mailto:sage [2007/08/16(木) 13:18:10 ] >>231 TransparentプロパティがTrueになってませんか? このプロパティはD2007からデフォルトでTrueになっています。
234 名前:デフォルトの名無しさん [2007/08/16(木) 15:07:34 ] >TransparentプロパティがTrueになってませんか? >このプロパティはD2007からデフォルトでTrueになっています。 おっしゃるとおりでした。 Del6はデフォルトでFalseでしたが、Del2007で開くとTrueに変化していました。 困ったことに、この状態でコンパイルすると False 状態で実行されました。 Del2007で一度プロパティを変化させてから保管すれば正しい状態に戻ります。 色々と調べていただきありがとうございました。
235 名前:デフォルトの名無しさん [2007/08/16(木) 21:13:57 ] メニュー(A)から、開発中のプロジェクトのプログラム(B)を 起動するようなアプリケーションを作成しています。 起動するアプリケーション(B)を、メニュー(A)を起動した状態で実行したいため、 オプションの「ホストアプリケーションの指定」で、 メニュー(A)のパスを入れたのですが、 実行しても、指定したメニュー(A)ではなく、 プロジェクトのアプリケーション自体(B)が立ち上がってしまいます。 何か他にする設定がありますでしょうか? 環境は、BDS2006 Delphi win32です。
236 名前:デフォルトの名無しさん [2007/08/16(木) 21:35:36 ] 他のDelphi製アプリの位置やサイズを得たいのですが、 良い方法はありませんでしょうか? 今は、EXEのファイル名から、Windowハンドルを取得するところまで できたのですが、 GetWindowRectで、Windowハンドルを渡しても、(640, 512, 640, 512) みたいな予期しない値が帰ってきます。 たぶん、Delphi特有のTApplicationの座標が帰ってきていると思うのですが、 ここから、メインフォームのハンドルを得る方法はありませんでしょうか?
237 名前:236 [2007/08/16(木) 21:50:23 ] AppHandleにTApplicationのHandleが入っているとして、 FormHandle := FindWindowEx(AppHandle, 0, PChar('TForm1'), nil); としたのですが、FormHandleは 0 が返ってきました。
238 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 22:00:14 ] FindWindowExの理解不足。 所有されているウィンドウと子ウィンドウの違いが解っていないのかもしれない。
239 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:38:31 ] Vista で標準となった? ALT 押したらメインメニューが出てくるのってどうやって実装するのですか? マウスを上部に持って行ったら…とかなら、MainMenu:=nil で切り替えられると思うのですが、 キーボード主体で行いたいので。
240 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:06:40 ] >>236 すなおにFindWindow('TForm', 'HogeHoge')でよいんでないの。 もしくはTApplicationのHandleを使って、EnumWindowsとか。
241 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:10:04 ] 2006→7?
242 名前:236 [2007/08/17(金) 01:29:51 ] 第6章 ウィンドウの階層について homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html これ見て、 GetWindow(hParent,GW_CHILD) でいけるかと思いましたが、ダメでした。 Delphi2006のVCLと、ページの内容のバージョンのVCLとは違うのでしょうか? >>238 FindWindowExやGetWindowで取得できないということは、 子ウインドウではないのですね・・・。 >>240 単純なFindWindowだと、識別が難しいのです TApplicationのHandleを使ったEnumWindow試してみるす
243 名前:236 [2007/08/17(金) 01:38:10 ] なんという勘違い/(^o^)\ 第6章 ウィンドウの階層について homepage2.nifty.com/Mr_XRAY/Halbow/VCL06.html このページよく見たら、わかてきた気がします。 > FindWindowExやGetWindowで取得できないということは、 > 子ウインドウではないのですね・・・。 TApplicationに対して、TFormは、子ウインドウではなく、 所有するウインドウなんですね。 とすると、TApplicationのHandleに対して、 EnumThreadWindowsして、 GetWindow(Handle,GW_OWNER)が、TApplicationのHandleかどうか調べればいいわけですね。 上のページで言えば、EnumDirectOwnedWindowsですね。 明日試してみます
244 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/17(金) 01:48:28 ] >>236-237 さん DelFusa Library - Delphi OpenSource - DelFusa Floor delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html ∧,,∧ ミ,,゚Д゚彡 ,ミ' ミ 〜OUUつ ここのEnumWinUnit.pasでWindow列挙も出来るし 得たハンドルをTWinInfoのCreateでハンドルを入れたら 様々な情報をプロパティから読めるようにしておいてるよ。 VCLのメインフォームを得るためには EnumWindows(@EnumWndProc, 0); {←Topレベルウィンドウなので0を指定} これとか function EnumWndProc(h: HWND; l: Integer): BOOL; stdcall; これを使っていて EnumChildWindows(h, @EnumChildWndProc, l+1); これは使ってない。
245 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/17(金) 01:49:24 ] ∧,,∧ 深夜なのに ミ,,゚Д゚彡 気温が暑いっすね〜 ,ミ' ミ 〜OUUつ タスクマネージャーのアプリケーションタブ互換は VisibleTrue/Owner有り/タイトル有り TApplication系のメインを見つける場合は VisibleTrue/Owner無し/タイトル有りで OwnerがTApplicationのものを列挙で見つけるのが いいと思うんだ。 例えばホットゾヌの場合 TApplicationにTHotzonuWindowがぶらさがっているのは TApplicationのハンドルとTHotzonuWindowのOwnerを調べると 一致するから、わかるよ。
246 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/08/17(金) 01:58:53 ] ♪ ∧,,∧ ♪ ミ,,゚Д゚彡 ♪ ミつ[|lllll]). 〜ミ ミ ∪''∪ 勉強すると楽しいよね。がんばってください。 とりあえず、D2007ではTApplicationウィンドウは廃止されますた。 dprの中身が begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TMainForm, MainForm); Application.Run; end. このようになっていて .MainFormOnTaskbar:=Trueとなると VCL、TApplication式ではなくVista対応アプリになります。 ※Win2Kで、今確認したら タスクマネージャーのアプリケーションタブに表示されないという バグがありますが....orz....
247 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 03:57:44 ] ListViewのOwnerDataをTrueにすると CheckboxesをTrueにしてもチェックボックスは表示されません 自分でチェックボックスを描画するんですか?><
248 名前:236 [2007/08/17(金) 04:25:44 ] >>244-245 EnumWindowsで列挙して、OwnerがTApplicationのハンドルと比較 が確実つーことですか。 実験してみるす 公開されているユニットも、参考にさせていただきます。 >>246 マジスカ
249 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 09:39:04 ] アジャイル、アジャイルってコンパイル速度のめっちゃ速いDelphiじゃすでに当たり前なんだよ
250 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:03:18 ] 導入したい超初心者ですが、 コードギアのユーザ登録のZip/Postal code ってなんですか?お願いします。
251 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:06:22 ] 中学生からやりなおせ
252 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 19:50:44 ] 郵便番号