Delphi 買ったけど。。No.0204 2008/03/08
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Delphi 買ったけど。。No.0204
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
まぐさんの言うには三ヶ月ぶりらしいですだも(^O^)/ TERRY です(^-^)
☆――――――――――――――――――――――――――――――☆
えっと、最近睡眠がとうとう5時間を切ってしまいまして。
本職の方もそうなんですが、自爆気味にやらなくてはいけないことが
ドンドン増えてきて毎日焦りと不安で少々鬱気味です。
そういえば先月くらいに左半身(心臓から左手にかけて)が痺れてきま
して内科、循環器科、整形外科とハシゴしてしまいました。
酷いときは茶碗くらいの重さのものも持てないくらいで、ある時ウェブ
でちょっちエッチィ動画を観たとき、心臓がバクバク鳴って、この状態
で死んだら少し恥ずかしいと焦ったり(^^;
取り敢えず仕事上の使い痛みだろうという結論でほとんど今は収まって
います。
☆――――――――――――――――――――――――――――――☆
前回(と言っても三ヶ月前ですが)
|今、Delphi5 で UniCode 関連に挑戦しています。
と書きましたが、少々疲れまして、「Visual C# 2008 Express Edition」
を落としてしまいました。
Delphi 万歳な私なのですが、必要なものだけこちらでやってみようかな
と。
でも、「!」とか「==」とか「++」「+」とかやっぱり美しくないですね
☆――――――――――――――――――――――――――――――☆
っとチラシの裏落書きだけでは何ですので、でるけど本文です。
リストボックスのアイテムや TStringList の一行ごとに複数のデータを
記憶させる時ってどうされていますか?
文字列 + Integer
とかのパターンでしたら「AddObject」で全くOKですが、これもまた
IniFile などでテキスト保存するときに不便かな?
また、文字列 + 文字列 でも2つのリストを使って同期させたり
Objects でインデックスつけたりすることがありますが、やはり関連
づけられたデータが一瞬でも離ればなれになるのってバグを呼びそう
ではないですか?
♪旅立つ僕の心を知っていたのか
遠く離れてしまえば愛は終わるといった
チューリップ『心の旅』
と言うわけで私はタブ区切りで一行の中につっこんでいます。
例えば簡単な例としましてウェブページのブックマークリストですね。
フォームにリストボックスを一つだけおいてください。
Style = lbOwnerDrawFixed
スタイルをオーナードローにしておきます。
uses
ShellApi;//ShellExecute 用
const
Tab=#9;
//タブで区切った文字列を分割する
function GetTabSep(S:string;Index:integer):string;
var
TabPos:integer;
begin
Result:=S;
TabPos:=AnsiPos(Tab,S);
if TabPos=0 then exit;
if Index=0 then//タブより前
begin
Result:=Copy(S,1,TabPos-1);
end else
begin
Result:=Copy(S,TabPos+Length(Tab),Length((S)));
end;
end;
//OnCreate でテスト様サンプルデータ
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.Add('Google'+Tab+'http://www.google.com/');
ListBox1.Items.Add('まぐまぐ'+Tab+'http://mag2.com/');
end;
//リストボックスのドローアイテムイベント
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
//ブックマークの「名前」だけ見えるようにする
with (Control as TListBox) do
begin
Canvas.TextRect(Rect,
Rect.Left+5,
Rect.Top,
GetTabSep(Items[Index],0));
end;
end;
//Wクリックイベントでブラウザ起動
procedure TForm1.ListBox1DblClick(Sender: TObject);
var
url:string;
begin
with (Sender as TListBox) do
url:=GetTabSep(Items[ItemIndex],1);
ShellExecute(Handle,'open',PChar(url),'','',CmdShow);
end;
#一行に複数のタブでいくつものデータを持たせた場合の取り出し関数
も書いたのですが、なんか範囲例外とか while と if が入り乱れ醜くな
って CommaText に一度入れた方が簡単なのでは?とやめてしまいました
m(_ _)m
☆――――――――――――――――――――――――――――――☆
そりでは(^.^)/~~
_________________________________________________________________
★わからない点などありましたら、メールしてください。
*****************************************************************
発行者:TERRY terry@vega*ocn*ne*jp
スパム対策です。 「*」を「.」に変更してください↑
★ 登録 or 解除はこちらから↓
http://www.vector.co.jp/authors/VA009187/delkedo/
★バックナンバー
http://backno.mag2.com/reader/Back?id=0000016258
*****************************************************************
★なるべくMSゴシックなどの「等幅フォント」でお読み下さい★
_________________________________________________________________
このメールマガジンは、
・インターネットの本屋さん『まぐまぐ』
http://www.mag2.com/ ID:0000016258
・melma!
http://www.melma.com/ ID:m00001349
で発行しています。
_________________________________________________________________


![転職なら[en]社会人の転職情報!転職成功者続出 転職なら[en]社会人の転職情報!転職成功者続出](http://kamogawa.mag2.com/bn/recommend/sya.gif)
![派遣のお仕事探しなら[en]派遣のお仕事情報 派遣のお仕事探しなら[en]派遣のお仕事情報](http://kamogawa.mag2.com/bn/recommend/haken.gif)
![アルバイト探しは[en]本気のアルバイト アルバイト探しは[en]本気のアルバイト](http://kamogawa.mag2.com/bn/recommend/baito.gif)
![就職サイトは[en]学生の就職情報 就職サイトは[en]学生の就職情報](http://kamogawa.mag2.com/bn/recommend/gakusei.gif)
![転職なら[en]転職コンサルタントキャリアを活かした転職に! 転職なら[en]転職コンサルタントキャリアを活かした転職に!](http://kamogawa.mag2.com/bn/recommend/consul.gif)

