1 名前: ◆XcB18Bks.Y mailto:sage [2008/06/24(火) 16:24:25 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その46 pc11.2ch.net/test/read.cgi/tech/1205323779/ <過去スレ> DelWiki避難所(Delphi 関連の過去スレッド) delwiki.info/?%E3%83%AA%E3%83%B3%E3%82%AF%2F%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%2FDelphi%20%E9%96%A2%E9%80%A3%E3%81%AE%E9%81%8E%E5%8E%BB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
705 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 05:23:52 ] Copyのまんまやん
706 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 08:31:34 ] Toolbar2000のD2009対応バージョンでたよー ttp://www.jrsoftware.org/tb2k.php
707 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 08:37:04 ] Toolbar2000よりTurboDelphi2009はまだかー
708 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 08:58:09 ] CodeGearは出す気はあるらしいけどね 学習用として出すらしいから機能は減るけど
709 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 09:35:23 ] 作ったソフトを配布できないとか意味不明な事はやめて欲しいのう
710 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 09:38:29 ] >>709 経済のお勉強しような。
711 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 09:41:01 ] (経済)笑い
712 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 10:05:47 ] 他人に上げるソフトなんて1部だけだし俺はそれでも構わんけどね
713 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 16:27:13 ] >>705 Copyの引数ってバイト数じゃなくて文字数じゃないの?
714 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 16:38:33 ] Copyはバイト数だよ。逆に文字数にしたかったらWideStringにキャスト Copy('へべれけ', 2, 2) ==> '??' Copy(WideString('へべれけ'), 2, 2) ==> 'べれ'
715 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 20:53:50 ] >>711 カッコ逆w
716 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 20:56:24 ] )経済(笑い
717 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 22:07:34 ] >>716 そうそう、次からは間違えんなよ
718 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 00:49:31 ] Turbo Explorerのことは、あきらめな。おそらくDelphi/C++Builderではなく、 Object Pascal/C++学習用環境、ということに…。
719 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 13:13:53 ] Delphi 6 で仮想リストビュー使ってます。 チェックボックスも表示したいのですが、OnData イベントで StateIndex にセットしないと表示しないようなので、 どうせならマウスカーソルのポイントの有無で色を分けようと、イメージリストに4種類の絵を用意しました。 インデックスは 0: チェックなし、1: チェックなしポイントあり、2: チェックあり、3: チェックありポイントありです。 リストアイテムの上でカーソルを動かすと OnData イベントが発生するようなので、WM_MOSEMOVE を処理して カーソルの位置からポイントしているアイテムを割り出して、OnData イベントでセットしわけようとしました。 WM_MOSEMOVE メッセージは Application.OnMessage イベントハンドラで処理しています。 コードの抜粋です。 【Application.OnMessage イベントハンドラ】 procedure TForm1.AppMessage(var Mesg: TMsg; var Handled: Boolean); var Point: TPoint; idr: TRect; begin if Mesg.message = WM_MOUSEMOVE then if Mesg.hwnd = ListView1.Handle then begin if ListView1.Items.Count > 0 then begin idr := ListView1.Items[0].DisplayRect(drBounds); if FListView1ItemHeght <> (idr.Bottom - idr.Top) then FListView1ItemHeght := (idr.Bottom - idr.Top); end; Point := ListView1.ScreenToClient(Mouse.CursorPos); FListView1MouseX := Point.X; FListView1MouseY := Point.Y; FListView1ItemIndex := (FListView1MouseY - ListView1.Top) div FListView1ItemHeght - 1; end; end;
720 名前:719 mailto:sage [2008/09/27(土) 13:15:17 ] (つづき) 【OnData イベント】 procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem); var ColumnWidth: Integer; begin ColumnWidth := ListView1.StringWidth(Format('Item%d', [Item.Index])); Item.Caption := Format('Item%d', [Item.Index]); if (FListView1ItemIndex = Item.Index) and (FListView1MouseX < 16) then Item.StateIndex := 1 else Item.StateIndex := 0; if ListView1.Columns[0].Width < ColumnWidth + 30 then ListView1.Columns[0].Width := ColumnWidth + 30; end; しかしこれだとマウスカーソルをチェックボックスにポイントしても変化しません。 ポイントアイテムの特定がめちゃくちゃなのはわかってますが、ズレてても変化ぐらいはしてもいいと思うのですが…。 アイテムの特定に無理やりな計算をしているのは、GetItemAt メソッドの使用が原因かどうか切り分けたかった からです。 ttp://mackerel205.ddo.jp/data/program/test/VirtualListViewCheckBox.zip 一応ここにプロジェクト一式置いておきますんで、興味があったら見てみてください。
721 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 23:32:31 ] そんなもん使わないでぶあーちゃるつりーびゅぅーを使おうぜ!
722 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 00:48:13 ] TListViewにファイル一覧を表示して、ドラッグ&ドロップで並び順を変更できるようにしています。 これにさらにOLE Drag and Dropの機能を追加して、ファイルを他のアプリケーションへドロップできるようにしようとしています。 この場合、どうすればOLE Drag and Dropと並び順の変更機能を共存させられるでしょうか? 並び順の変更もOLE Dropを受けて行うしかないのでしょうか。
723 名前:722 mailto:sage [2008/09/28(日) 21:33:39 ] やっぱりOLE Dropの処理と統合するしかなさそうですね。 素直にそう実装することにします…。
724 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 22:56:08 ] SpTBXLib 2.3 released. Installation and requirements: TNT is not used on Delphi/C++Builder 2009 club.telepolis.com/silverpointdev/sptbxlib/support.htm#installation Web interface to jrsoftware.org newsgroups - ANN: SpTBXLib 2.3 news.jrsoftware.org/read/article.php?id=15223&group=jrsoftware.toolbar2000.thirdparty#15223 SpTBXLib のDelphi2009版はついに TNT 要らずになった
725 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 08:55:23 ] 自作のアプリのUIはMainMenu+Coolbar+ToolbarなXPのExplorer風からまったく進歩してないな・・・ ActionManagerとかって最新の環境だと普通に使われるくらい安定してるの?
726 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:10:14 ] >>724 すごい。
727 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:35:11 ] 質問です。 TStringGridを使ってます。 例えば、Rowを削除したいのですが、簡単なメソッドがありません。 そこで、OnSelectCell内でRowの内容をずらして行って、最後に RowCountを-1使用と試みても、 OnSelectCell内でCellsの内容をいじると再帰で呼ばれて、オーバフローに なってしまいます。 簡単にRowを削除する方法ありますか?
728 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:38:23 ] >>727 DelRow:=StringGRid1.Row; for N=0 to StringGrid1.ColCount-1 do StringGrid1.Cols[N].Delete(DelRow); StrinGgrid1.RowCount:=StringGrid1.RowCount;
729 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:59:26 ] >>728 さん ありがとうございます。 頂いたコードを試したりしたのですが、 ”グリッドの行を追加/削除することは出来ません” というエラーが出てしまうんです。 簡単にTValueListEditorのように空のRowを削除できないものでしょうか・・・ あ、すみません。環境はD6+XP SP3です。 よろしくお願いします。
730 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:10:07 ] >>729 ごめん、なんか勘違いしてるわ。今は↓こんなんしか思いつかん。 for N:=StringGRid1.Row to StringGrid1.RowCount-2 do StringGrid1.Rows[N].Text:=StringGrid1.Rows[N+1].Text; StrinGgrid1.RowCount:=StringGrid1.RowCount-1;
731 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:22:21 ] 730さん 何回もすみません。 ですよね。文字列を詰めて、最後にRowCountを調整するって簡単に考えていたのですが それをOnSelectCell内で行うとスタックオーバーフローになるし、 どうしたもんかと思っていたんですよ・・・ ちょっと、ググったら、ビンゴかなと思われるページがありました。 delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00488.html まだ、解読及び検証中ですが・・・ なにはともあれ、ありがとうございます。