08/06/13 11:46:29
前に書いたソートサンプル。適当に解読してくれ。
{ Private 宣言 }
ColumnToSort: Integer;
LastColumnToSort: Integer;
Ascending: Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
ColumnToSort := -1;
LastColumnToSort := -1;
end;
procedure TForm1.listviewColumnClick(Sender: TObject; Column: TListColumn);
begin
ColumnToSort := Column.Index;
if (Ascending > 0) and (ColumnToSort = LastColumnToSort) then
Ascending := -1
else
Ascending := 1;
LastColumnToSort := ColumnToSort;
listview.AlphaSort;
end;
procedure TForm1.listviewCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
Compare := ( StrToInt(Item1.SubItems[ColumnToSort-1]) - StrToInt(Item2.SubItems[ColumnToSort-1]) ) * Ascending;
end;
904:デフォルトの名無しさん
08/06/13 11:59:15
>>903
助かった。thx!
コピペでできてしまったので、次使うときのために解読しとくわ。
905:デフォルトの名無しさん
08/06/13 13:44:41
コピペだけでアプリ一本作りそうな勢いだなww
906:デフォルトの名無しさん
08/06/13 15:35:05
>>905
教科書はネットのみだからおのずとコピペが多くなってしまうのは仕方ない気がw
アプリはもうできてて今は改善している段階でふ。
907:デフォルトの名無しさん
08/06/14 01:34:51
ifの条件が複数あるときはVBのようにandで繋ぐことは出来ないんでしょうか?
908:デフォルトの名無しさん
08/06/14 01:38:27
そんなの入門サイトに乗ってそうだけどなあ
回答としては「出来る」よ
909:デフォルトの名無しさん
08/06/14 16:33:57
listviewで表を作っているんですが
ある条件を満たしたときに画像を文字の後ろに付け足したいのですがどうすればいいですか?
column1,column2,・・・
名前,数学の点数,国語の点数,
で、数学の点数や国語の点数が80点を越えたときに
各々数学マーク.bmp、国語マーク.bmpを名前の後ろに付け足したいという意味です。
910:デフォルトの名無しさん
08/06/14 17:20:45
>>907
自分で答えを書いているじゃないかw
911:デフォルトの名無しさん
08/06/14 17:47:55
>>909
OwnerDrawするしかないと思う
912:デフォルトの名無しさん
08/06/14 18:59:06
listviewのownerdrawか・・・激しく挫折しそうだ・・
913:デフォルトの名無しさん
08/06/14 20:38:35
>>907-908
演算子の優先度がVBと違うからできないと思ったのかもしれないな
if (条件) and (条件) ~
みたいに括弧で括らないといけないから
914: ◆XcB18Bks.Y
08/06/15 01:09:49
>>912
ListViewのOwnerDrawはOwnerDataを使っていなければそんなに難しくないと思います。
OwnerDataを使っているならHeaderコントロール+ListBoxマジオススメ。
915:デフォルトの名無しさん
08/06/15 11:58:17
ListViewやListBoxの内容は直接編集出来ないんでしょうか?
916:デフォルトの名無しさん
08/06/15 12:36:59
クリックしたときに、カーソル直下のセルに内容入れたTEdit生成して、TEditがフォーカス失ったらTEditの内容をセルに書き込めばいいと思うよ。
TStringGridで用が足りることも多いけどNE
917:デフォルトの名無しさん
08/06/15 22:17:04
formcreateでiniファイルを読み込んで、listboxにiniの内容を書き出したいのですが
for do でループしようと思ったら、iniファイルのセクションの項目数をカウントする方法が思いつかずに
困っているのですが、これはどうしたらいいのでしょうか
逆にtxt形式にしてreadlnでuntil Eofとかしないとだめなのでしょうか。ご教授ください。
918:デフォルトの名無しさん
08/06/15 22:43:28
>>917
ReadSections
919:デフォルトの名無しさん
08/06/15 22:47:52
>>918
ありがとう
920:デフォルトの名無しさん
08/06/17 08:04:52
>>919
自演おつ
921:デフォルトの名無しさん
08/06/18 16:54:27
AnsiやUTF8の文字列をUTF32にエンコードするにはどうすればいいんでしょう?
WikipediaのUnicodeの項目を見るとUCS4とUTF32は互換性があるらしいですが、
WideStringToUCS4Stringでエンコードしても、UCS4StringをStringに正常にキャストする方法が見つからず、
UTF32かどうか確かめられません
よろしくお願いします
922:デフォルトの名無しさん
08/06/18 18:44:59
WideStringToUCS4Stringがあれば、当然UCS4StringToWideStringもあるわけだけど、
直接Stringにしたいって事?
923:921
08/06/18 19:30:09
すみません、自己解決しました
MBCSUtils(URLリンク(cc.codegear.com))のAnsiStringToUtf8をしたあと、Utf8ToWideStringをしたら
望むとおりの結果がでました
>>922
そうです
UTF8にしたときは普通にStringとして取得できますが、WideStringToUCS4Stringだと
取得できないので、それを取得しようと思ったのです