08/09/26 09:41:01
(経済)笑い
712:デフォルトの名無しさん
08/09/26 10:05:47
他人に上げるソフトなんて1部だけだし俺はそれでも構わんけどね
713:デフォルトの名無しさん
08/09/26 16:27:13
>>705
Copyの引数ってバイト数じゃなくて文字数じゃないの?
714:デフォルトの名無しさん
08/09/26 16:38:33
Copyはバイト数だよ。逆に文字数にしたかったらWideStringにキャスト
Copy('へべれけ', 2, 2) ==> '??'
Copy(WideString('へべれけ'), 2, 2) ==> 'べれ'
715:デフォルトの名無しさん
08/09/26 20:53:50
>>711
カッコ逆w
716:デフォルトの名無しさん
08/09/26 20:56:24
)経済(笑い
717:デフォルトの名無しさん
08/09/26 22:07:34
>>716
そうそう、次からは間違えんなよ
718:デフォルトの名無しさん
08/09/27 00:49:31
Turbo Explorerのことは、あきらめな。おそらくDelphi/C++Builderではなく、
Object Pascal/C++学習用環境、ということに…。
719:デフォルトの名無しさん
08/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
08/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 メソッドの使用が原因かどうか切り分けたかった
からです。
URLリンク(mackerel205.ddo.jp)
一応ここにプロジェクト一式置いておきますんで、興味があったら見てみてください。
721:デフォルトの名無しさん
08/09/27 23:32:31
そんなもん使わないでぶあーちゃるつりーびゅぅーを使おうぜ!
722:デフォルトの名無しさん
08/09/28 00:48:13
TListViewにファイル一覧を表示して、ドラッグ&ドロップで並び順を変更できるようにしています。
これにさらにOLE Drag and Dropの機能を追加して、ファイルを他のアプリケーションへドロップできるようにしようとしています。
この場合、どうすればOLE Drag and Dropと並び順の変更機能を共存させられるでしょうか?
並び順の変更もOLE Dropを受けて行うしかないのでしょうか。
723:722
08/09/28 21:33:39
やっぱりOLE Dropの処理と統合するしかなさそうですね。
素直にそう実装することにします…。
724:デフォルトの名無しさん
08/10/01 22:56:08
SpTBXLib 2.3 released.
Installation and requirements:
TNT is not used on Delphi/C++Builder 2009
URLリンク(club.telepolis.com)
Web interface to jrsoftware.org newsgroups - ANN: SpTBXLib 2.3
URLリンク(news.jrsoftware.org)
SpTBXLib のDelphi2009版はついに TNT 要らずになった
725:デフォルトの名無しさん
08/10/02 08:55:23
自作のアプリのUIはMainMenu+Coolbar+ToolbarなXPのExplorer風からまったく進歩してないな・・・
ActionManagerとかって最新の環境だと普通に使われるくらい安定してるの?
726:デフォルトの名無しさん
08/10/03 13:10:14
>>724
すごい。
727:デフォルトの名無しさん
08/10/03 13:35:11
質問です。
TStringGridを使ってます。
例えば、Rowを削除したいのですが、簡単なメソッドがありません。
そこで、OnSelectCell内でRowの内容をずらして行って、最後に
RowCountを-1使用と試みても、
OnSelectCell内でCellsの内容をいじると再帰で呼ばれて、オーバフローに
なってしまいます。
簡単にRowを削除する方法ありますか?
728:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/03 13:59:26
>>728さん
ありがとうございます。
頂いたコードを試したりしたのですが、
”グリッドの行を追加/削除することは出来ません”
というエラーが出てしまうんです。
簡単にTValueListEditorのように空のRowを削除できないものでしょうか・・・
あ、すみません。環境はD6+XP SP3です。
よろしくお願いします。
730:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/03 14:22:21
730さん
何回もすみません。
ですよね。文字列を詰めて、最後にRowCountを調整するって簡単に考えていたのですが
それをOnSelectCell内で行うとスタックオーバーフローになるし、
どうしたもんかと思っていたんですよ・・・
ちょっと、ググったら、ビンゴかなと思われるページがありました。
URLリンク(delfusa.main.jp)
まだ、解読及び検証中ですが・・・
なにはともあれ、ありがとうございます。