1 名前:デフォルトの名無しさん mailto:sage [2005/11/23(水) 23:31:08 ] Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
331 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:07:54 ] >>328 たぶん出来ない。 右ボタンメニュを出すには TrackPopupMenu を呼び出すわけで エディットコントロールにはデフォルトのWM_RBUTTONUP内部でコレを呼び出してる部分があるのだろう TrackPopupMenuを呼び出すにはhMenuが必要だけど、EDITでコレを入手する方法が見つからない。 親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。
332 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:38:35 ] そうですか(´・ω・`)ショボーン >親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。 親窓を取得したりできないですかね。 差し替えたPopupMenu1のイベントハンドラを実行すると、 EditのデフォルトのPopupMenuを開きなおしたり、 とかでも良いのですが。
333 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:53:09 ] >>332 後半なら var SaveMenu:TPopupMenu; begin SaveMenu:=Edit1.PopupMenu; Edit1.PopupMenu:=nil; SendMessage(Edit1.Handle,WM_RBUTTONDOWN,Edit1.Left,Edit1.Height); SendMessage(Edit1.Handle,WM_RBUTTONUP,Edit1.Left,Edit1.Height); Edit1.PopupMenu:=SaveMenu; end; と、いったんメニューを外して、右ボタンを押して離してを送りつければ出るよ
334 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:57:32 ] 有難うございます。それでやってみます。(*`∀´*)
335 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:28:00 ] メニューを外さなくても、直接小窓にメッセージを送ると出るみたい var pt:TPoint; begin pt:=ClientToScreen(Point(Edit1.Left,Edit1.Height)); PostMessage(Edit1.Handle,WM_CONTEXTMENU,Edit1.Handle,pt.x+(pt.y shl 16)); end;
336 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:49:46 ] thx! >>333 >>335 両方おk、でした。 TPointを指定するのメンドウだから、333でやるかも。 PopupMenu1のメニューの一つに編集っていうメニューを用意して、それだとデフォメニューをオープン、 という動作でカコヨクできました。
337 名前:デフォルトの名無しさん [2007/09/21(金) 20:03:36 ] >>326 ひょっとしてあたしを騙したの?
338 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 20:47:23 ] 勝手な思いこみ
339 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 02:55:26 ] 今からでるふぁい
340 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:11:26 ] もう死んデルファイ
341 名前:デフォルトの名無しさん [2007/09/24(月) 00:52:44 ] みなさん 多言語化(日本語/英語) をするときはどうしてますか?おしえてください
342 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 00:58:53 ] >>341 TNT+dxgettext
343 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 03:36:29 ] 素直にリソースDLLウィザード。日本語/英語以外の言語サポートが必要ならTNTも併用。
344 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 04:17:57 ] 標準VCLって役立たずだな
345 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 12:17:20 ] >>341 Delphiに国際化対応のツールが付属してるでしょ、
346 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 07:52:39 ] 61 名前:34[] 投稿日:2007/09/24(月) 19:13:21 お久しぶりです。TThreadでボヤいてた者です。 TThreadをプールして使い回してみたところ問題なさそうなのでこれで行くことにしました。 あとスレッドで処理中にフォームを操作するとCPU100%のまま帰ってこなくなる現象が出ましたが、 TThreadの方にpublicで作ったAnsiStringに渡した文字列が原因だったようで、 スレッドの変数をAnsiString.Unique()して参照を切り離してやったら問題無くなりました。 これから先に嵌る人が居るかもしれないので書いておきます。 改めてありがとうございましたorz
347 名前:デフォルトの名無しさん [2007/09/27(木) 14:25:29 ] みなさんありがとうございます。 >国際化、リソースDLL こちらに書いてあることでしょうか? www.wwlnk.com/boheme/delphi/tips/tec1550.htm 最後に書いてある、一度設定したらもう変更できないみたいな ことが気になるのですが、 修正が入ったり、言語が変わると文字列の幅が変わるので 画面の調整も必要に思うんですが みなさんどうしているのでしょうか? 何度も修正する場合 TNT+dxgettextが使われるのでしょうか。
348 名前:デフォルトの名無しさん [2007/10/04(木) 12:21:13 ] アプリ全体のフォントサイズを大きくするって簡単ですか?
349 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 15:10:25 ] Formのフォントサイズをでかくすれば その上に貼り付けたコントロールも一緒にでかくなる。 ParentFont参照。 ウィンドウキャプションとかはWindowsが描いてるものだから無理。
350 名前:348 mailto:sage [2007/10/04(木) 15:20:04 ] サンクス>>349
351 名前:デフォルトの名無しさん [2007/10/04(木) 16:38:18 ] JPEG2000を表示する方法を教えて頂けないでしょうか?
352 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 22:53:42 ] >>351 Susie Plug-in + SPIS
353 名前:デフォルトの名無しさん [2007/10/10(水) 11:38:53 ] 実行中のexeのリストを取得するコンポはありまつか?
354 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 14:59:41 ] すれ違い >Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
355 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 16:31:39 ] >>353 マジレスするとDelphiでは無理
356 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 18:38:07 ] >>353 コンポは知らないけど NtQuerySystemInformation を googleさんに begin とか pas と and で聞いたら 教えてくれるんじゃないかな
357 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 19:06:35 ] >>353 コンボはないけど、 多分、TookHelp関数を使えば割と簡単にできると思う。 具体的にはTHelp32.pasに宣言されている、 Process32FirstとProcess32Nextを使えばいいんじゃない。
358 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 23:55:39 ] >>355 お前の持ってるでるふゃいではな。
359 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 00:26:35 ] API使える言語ならどれでも出来る 逆にこれをライブラリ化してる製品ってないんじゃないかな
360 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2007/10/11(木) 01:04:52 ] ∧,,∧ これつかってちょ。 ミ,,゚Д゚彡 U つ @ミ ミ ∪''∪ DelFusa Library - Delphi OpenSource - DelFusa Floor delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html GetProcExeNameList
361 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 05:28:29 ] おまいら、すれ違い >Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
362 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 06:37:28 ] 問題 インチをセンチメートルに変換するプログラムを作って 細かい仕様は自由 ヒント:1in = 2.540cm 、StrToFloat
363 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 07:36:26 ] program Project1; {$APPTYPE CONSOLE} function InchToMetre(Value:Double):Double; const INCH_UNIT=0.0254; begin Result := Value * INCH_UNIT; end; begin writeln(InchToMetre(0.050)); //12.7 writeln(InchToMetre(0.045)); //7.62 writeln(InchToMetre(0.030)); //5.56 end.
364 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 07:36:56 ] 嘘が書いてあるorz
365 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:15:41 ] DelphiでJpeg2000を表示する方法を教えて下さいでつ。
366 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:48:48 ] しつこい
367 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:53:58 ] codecentral.borland.com/Item/22123
368 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 11:44:07 ] DelphiでJpeg2000を表示する方法を教えて下さいでつ。
369 名前:365 mailto:sage [2007/10/11(木) 11:51:18 ] 368はニセモノでつ。 でも、実は未だに解決してなくて知りたかったりして。
370 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:22:13 ] 普通に>>367 ので表示できたけど?
371 名前:365 mailto:sage [2007/10/11(木) 14:23:02 ] サンクス>>370 実は自分もDel7出来ました。 が、実際の環境である、 C++ Builder 6だと上手くコンパイルできないんでつ><
372 名前:デフォルトの名無しさん [2007/10/11(木) 16:41:56 ] Delphiアプリのメインフォームのウィンドウクラスって、TApplication固定でしたっけ?
373 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 19:19:37 ] でつでつ言うなよ
374 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:14:07 ] でつな
375 名前:デフォルトの名無しさん [2007/10/12(金) 15:44:09 ] (a+3)^ ってある^はどういう意味?
376 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 16:43:45 ] ObjectPascalの場合 後ろの^は ポインタの参照 C言語の *(a+3) と同じ
377 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 17:52:24 ] なるほどサンクス
378 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 18:39:09 ] よく見かける、 エディットボックスにファイルをD&Dしてそのパスを取得 はどのようにやればよいですか?
379 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 19:29:56 ] 質問はこちらにどうぞ くだすれDelphi(超初心者用)その44 pc11.2ch.net/test/read.cgi/tech/1191657968/l50
380 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 05:15:36 ] 答えられんからって誘導とは酷いな!
381 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 17:21:40 ] vb.netでそこそこは作れるレベルだけど、delphi始めようと思ったら最初に買うべき 本は何がいい? それかどぼんみたく、そこだけ見ればそこそこのものは作れるようになるサイトか
382 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:12:41 ] 何を作りたいかだろ ファイラ作りたいとか、MMO作りたいとか(スレがあっったりするが)
383 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 08:44:22 ] ドトネトみたく環境設定も要らないし、コンポーネントも要るものはあるし。 いきなり始めて、躓いてから質問してみたら?
384 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:17:32 ] VB2005はヘルプがすごく使いやすい
385 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:30:47 ] ヘルプだけかよw ネイティブアプリが作れるようになったら試しに触ってやるよ。
386 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 23:24:20 ] ま、C#からやったらいいよ。DelphiもIDEは.NETが必要だし。 C#は良い本もヘルプもMSDNもWEBサイトも腐るほどあるし。
387 名前:デフォルトの名無しさん [2007/11/09(金) 01:23:20 ] Del5。XPで、 Ctrl+Alt+Delを無効にする方法。 右クリックを無効にする方法。 教えて。
388 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:40:40 ] >Ctrl+Alt+Delを無効にする方法。 マルウェアでも作るつもりですか?
389 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 05:38:41 ] そーゆーことしたいなら自分で調べろww
390 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 06:47:53 ] >>387 いちばん簡単なのは、DirectXのフルスクリーンモードで、そういうモードがある。 やり方は自分で調べろ
391 名前:387 [2007/11/09(金) 06:48:48 ] いや、調べてもわからないから聞いてるんで。 ちなみに、会社のIT担当委員ってのをやってて、社員にサイバーテロの対処について教育するんだが、 本物のウィルスを使うわけにはいかないんで、ジョークウェアを作ろうと思っている。
392 名前:387 [2007/11/09(金) 06:49:39 ] 書き忘れた。 一定の時間が経過したら自動的に終了させるつもりだ。
393 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:31:11 ] Ctrl-Alt-Deleteのキーストロークは最優先でシステムが捕捉するので、これを 無効にすることはできない。無理。不可能。Deleteキーの軸を折っちゃえ。 右クリックはマウスの右クリックのスイッチを(ry
394 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 06:56:12 ] 無理ではない。教えたいところだけど、>>391 が本当か分からないし 教える立場だったら自分で調べて欲しいところ。 ヒント:海外
395 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 07:35:04 ] ソフトウェア板の各所でも、キーロガーとか、スパウウェア用途に使われるものは紹介しないというルールだしな おしえる側も、最低限のことは守らないと
396 名前:デフォルトの名無しさん [2007/11/10(土) 08:46:07 ] 391だけど、不正ソフトばらまくのは犯罪だってことくらい知ってるよ。 けどまぁ、信用してもらえないのも仕方がないからなんとかするわ。
397 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:10:16 ] 2chで信用しろといわれても・・・
398 名前:delphi初心者 [2007/11/12(月) 13:48:03 ] ご質問いたします。 1.コンマ区切りの文字列をばらして配列にセットしてくれる関数はありませんか? 2.functionで配列は返せないのですか? 追伸: 「そんなこと自分で調べろ!」 と云う罵倒はおことわり。
399 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:50:46 ] TStringList.CommaText
400 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:51:22 ] それかTStringList.Textに入れれば、バラしてくれたかも
401 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:10:08 ] >398 配列の型を宣言してそれを戻り値の型にすればおk
402 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 14:33:42 ] >>401 それ、何てTStringList?
403 名前:デフォルトの名無しさん [2007/11/13(火) 18:48:49 ] 【Borland Delphi 6 Personal日本語版 入手先】 www.vector.co.jp/soft/dl/win95/prog/se205882.html 【Delphi 6 導入手順 】 www.wikihouse.com/DelphiVIP/index.php?%C6%B3%C6%FE%BC%EA%BD%E7 【インターネットダイレクト(Indy)コンポーネント導入手順 】 homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm 動作確認は、メモとIdHttpコンポーネントを貼り付けて以下のコードを書いて実行してみる。 うまくいくとこのスレがメモにダウンロードされる。 Memo1.Lines.Text := IdHttp1.Get('live19.2ch.net/test/read.cgi/stock/1144395454/l50 '); 【デルファイの質問所】 hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi groups.google.com/groups/search?hl=ja&q=delphi+
404 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:01:32 ] 上げ荒らしうぜえ
405 名前:初心者++ [2007/11/18(日) 11:09:49 ] UpdateSQLがうまくいきません。以下のようなコードで実行すると、例外エラー'アップデート失敗'がでます。 propertyの設定は cachedupdate true /requestlive true /updateobject updatesql updatesqlのsql設定文もできてると思うんですが、、、 begin database1.open; database1.StartTransaction; query1.Open; end; procedure TSDIAppForm.Button1Click(Sender: TObject); begin if query1.UpdatesPending then begin query1.ApplyUpdates; end; database1.Commit; query1.CommitUpdates; query1.Close; database1.Close; end; どこが間違ってるのでしょうか?教えてください Turbo Delphi for wind32 OS : wind2000です。
406 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:36:44 ] 残念、スレちがいです。 >Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
407 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:54:22 ] 糞なテンプレでスレ立てて必死に粘着交通整理してる奴ってなんなの?
408 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:45:04 ] 自分の居場所なんだから、そりゃ必死だろう。 自分の居場所をキチンとメインテナンスするのは、それは当然ではあるまいか?
409 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:32:32 ] 自分の居場所ならグダグダ「スレ違い」とか言ってないで、問題を出題すべきだと思うんだな。 問題と解答、それに議論が無いから、過疎ってスレ違いと基地外の巣窟と化してるんだな。 問題:おみくじ randomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ
410 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:36:13 ] >>409 あまりにも簡単すぎるプログラム出題でワロタw せめて、n回凶が出る確率を計算するプログラムとかにすればいいのに。
411 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:47:39 ] >>405 Queryの更新エラーは、 query1.RequestLiveのtrue/falseが 結構関係している。
412 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 22:53:35 ] Gandomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ
413 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:05:26 ] >>412 CGは専門外なんで無理ですw
414 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:21:52 ] Gandom はすれ違い。
415 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 01:02:34 ] 問題:呼び出すたびに1と0を交互に返す関数を書け。グローバル変数を使っても良い。
416 名前:初心者++ [2007/11/21(水) 02:06:06 ] UpdateSQLのエラーが解決しました。レスを下さった方ありがとうございました。 SQL文のキー違反でした。 SQLの勉強をもっとしないと阿寒と思いました。 Accessのビューで作ったSQL文を貼り付けたりしておったのですが、、、。 エラー続出でした。
417 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:30:12 ] 問題:マウスクリックすると、クリックしたマス目とその上下左右のマスが反転する。 マス目を全て塗りつぶしたらクリアとなるゲームを作る □□□□□ □□□□□ ■■□□□ □□□□□ □□■□□ ■□■□□ □□□□□ □■■■□ □■■■□ □□□□□ □□■□□ □□■□□ □□□□□の真ん中を押すと □□□□□左上クリックで .□□□□□ ■■□□□ ■□□□□ ■○■□□ □■□□□ □■■■□ □□■■□ □□■□□ □□■□□ □□□□□ ○を押したら □□□□□ 全部塗りつぶしたらゲームクリア ■■■■■ ■■■■■ ■■■■■ ■■■■■ ■■■■■
418 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:43:16 ] >>417 ライツアウト懐かしいな
419 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 00:58:06 ] 俺には作れねぇ
420 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 01:03:28 ] 頑張れば作れなくもなさそうだけど、とてつもなく無駄が多くなりそう・・。
421 名前:1/2 mailto:sage [2007/11/22(木) 01:33:44 ] TForm1 = class(TForm) procedure FormPaint(Sender: TObject); procedure FormClick(Sender: TObject); private FTable: array[0..4, 0..4] of Boolean; end; procedure TForm1.FormPaint(Sender: TObject); const B2S: array[Boolean] of String = ('□', '■'); var x, y: Integer; begin for x := 0 to 4 do for y := 0 to 4 do Canvas.TextOut(x*12, y*12, B2S[FTable[x, y]]); end;
422 名前:2/2 mailto:sage [2007/11/22(木) 01:34:15 ] procedure TForm1.FormClick(Sender: TObject); var pt: TPoint; begin pt := Self.ScreenToClient(Mouse.CursorPos); pt.X := pt.X div 12; pt.Y := pt.Y div 12; if (0 <= pt.X) and (pt.X <= 4) and (0 <= pt.Y) and (pt.Y <= 4) then begin FTable[pt.X, pt.Y] := not FTable[pt.X, pt.Y]; if 1 <= pt.X then FTable[pt.X-1, pt.Y] := not FTable[pt.X-1, pt.Y]; if pt.X <= 3 then FTable[pt.X+1, pt.Y] := not FTable[pt.X+1, pt.Y]; if 1 <= pt.Y then FTable[pt.X, pt.Y-1] := not FTable[pt.X, pt.Y-1]; if pt.Y <= 3 then FTable[pt.X, pt.Y+1] := not FTable[pt.X, pt.Y+1]; end; Invalidate; end;
423 名前:2/2 ver.2 mailto:sage [2007/11/22(木) 01:40:47 ] クリア判定忘れてた。 procedure TForm1.FormClick(Sender: TObject); var pt: TPoint; x, y: Integer; Clear: Boolean; begin pt := Self.ScreenToClient(Mouse.CursorPos); x := pt.X div 12; y := pt.Y div 12; if (0 <= x) and (x <= 4) and (0 <= y) and (y <= 4) then begin FTable[x, y] := not FTable[x, y]; if 1 <= x then FTable[x-1, y] := not FTable[x-1, y]; if x <= 3 then FTable[x+1, y] := not FTable[x+1, y]; if 1 <= y then FTable[x, y-1] := not FTable[x, y-1]; if y <= 3 then FTable[x, y+1] := not FTable[x, y+1]; end;
424 名前:3/2 mailto:sage [2007/11/22(木) 01:41:18 ] Clear := True; for x := 0 to 4 do begin for y := 0 to 4 do if not FTable[x, y] then begin Clear := False; Break; end; if not Clear then Break; end; if Clear then ShowMessage('おめ'); Invalidate; end;
425 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 02:02:47 ] すげー!参考にさせて頂きますm(_ _)m
426 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 11:33:40 ] implementation {$R *.dfm} //スペースの都合上ここに記述本当ならTForm1のprivateが望ましい var BTable:array of array of Boolean; procedure CheckComplete(); var X,Y:Integer; begin for X:=1 to High(BTable)-1 do for Y:= 1 to High(BTable[X])-1 do if Not BTable[X,Y] then Exit; ShowMessage('Mission Complete!'); end; procedure TForm1.FormCreate(Sender: TObject); begin SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1); end;
427 名前:修正1/2 (426は放置推奨 ) mailto:sage [2007/11/23(金) 11:43:25 ] //●最初にDrawGridを貼り付け、プロパティを以下のようにセット Align = alClient DefaultDrawing = False ColCount = 6 RowCount = 6 //●FormのPrivateに以下のフィールドとメソッドを追加 BTable:array of array of Boolean; //動的二次元配列 procedure CheckComplete(); //●CheckComplete関数を書く procedure TForm1.CheckComplete(); var X,Y:Integer; begin for X:=1 to High(BTable)-1 do for Y:= 1 to High(BTable[X])-1 do if Not BTable[X,Y] then Exit; ShowMessage('Mission Complete!'); end; //●FormCreateを書く procedure TForm1.FormCreate(Sender: TObject); begin SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1); end;
428 名前:修正(2/2) mailto:sage [2007/11/23(金) 11:43:59 ] //●DrawGrid1DrawCellを書く procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); const COLORPALS:array[Boolean] of array[Boolean] of TColor = ((clWhite,clBlack),(clSilver,clSilver)); begin DrawGrid1.Canvas.Brush.Color := COLORPALS[(gdFixed in State) , BTable[ACol,ARow] ]; DrawGrid1.Canvas.FillRect(Rect); end; //●DrawGrid1SelectCellを書く procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean); begin BTable[ACol-1,ARow] := Not BTable[ACol-1,ARow]; BTable[ACol ,ARow] := Not BTable[ACol ,ARow]; BTable[ACol+1,ARow] := Not BTable[ACol+1,ARow]; BTable[ACol,ARow-1] := Not BTable[ACol,ARow-1]; BTable[ACol,ARow+1] := Not BTable[ACol,ARow+1]; DrawGrid1.Invalidate; CheckComplete(); end;
429 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 18:34:16 ] >>417 7行スレで盛り上がりそうな内容だなw
430 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 17:46:32 ] 25ボタンの処理を全部書くことで初心者でも作れてしまうが、まじめにやれば7行に・・・・なるな多分
431 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:00:38 ] >>157 D6からそうなったのか? パスなしだとWINDOWSフォルダにつくられるんじゃなかった?