DelFusa Blog 総本山

プログラミングの話題とかです。

NEW | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT


                _____
      ∧,,∧___   /
    /ミ,,゚Д゚ミ/\< ひさしー 
  /| ̄∪∪ ̄|\/ \_____
    |____|/

どもども。生きてますし、元気してますし
Delphiに飽き足りは全くしてない、漏れです。

2chに久しく書き込もうと思ったら、
うちの業者さん、アクセス制限くらってまして
串リストとか知らない、優良ユーザーの漏れとしては
書き込めなくてあきらめたりしていたのですが。

ま。そんな日々を忙しくすごしてます。


ちょっとしたバグをみつけて1日を無駄(?)にすごしてしまいました。
まあ、けっこう日々コードは書いておるのですよ。

D2007 UP3適応済み
では、以下内容。

TabControlにImagesプロパティでImageList1を割り当てているのですが
TabControlのタブを消すと
割り当てられたアイコンがずれまくります。

再現最小限コードは、ちょと面倒なので書きませんが

  TabControl1.Images := ImageList1;
このようにしておいて、ImageListとTabを動的に追加削除してます。

Tab1にAアイコン
Tab2にBアイコン
Tab3にCアイコン
があったとして

  TabControl1.Tabs.Delete(0);
  ImageList1.Delete(0);

こうすれば
Tab1がきえてなくなり
Tab2にBアイコン
Tab3にCアイコン

こうなって、いいはずの所が

Tab2にCアイコン
Tab3にアイコン無し

という素敵な状態になります。Tabの削除がアイコン削除を巻き込んでいる悪寒。

  TabControl1.Images := nil;
  TabControl1.Tabs.Delete(0);
  ImageList1.Delete(0);
  TabControl1.Images := ImageList1;

こんな事をしても回避できず。
ImageListのカウントも正常だし、、アイコンリソース部分だけ消されてるのかな?

で、何時間後、回避方法がわかりました。

  TabControl1.Tabs.Delete(0);
  ImageList1.Delete(0);
  TabControl1.OwnerDraw := True;
  TabControl1.OwnerDraw := False;

元々、OwnerDraw=False状態での実装なので
それを切り替えれば、何かアイコンリソースなのか?そういうものが再生成されてOK?と。

当然、画面がちらつかないように、
起動時にこの設定はしています。
 TabControl1.DoubleBuffered := True;

ちょっぴりトホホでした。
VCLソースコードのどこにバグが潜んでいるのやら....

まあ、コード書いているのは、とても面白いから
楽しめてるといえば、楽しいですけど~
スポンサーサイト

| 未分類 | 00:16 | comments:2 | trackbacks:0 | TOP↑

COMMENT

あれこれなやむより QC にいれたら?

| いつものとおりすがり | 2007/11/28 00:53 | URL | ≫ EDIT

気が向いたらそうするね。
ミ・∀・彡

| ミ・д・彡 | 2007/12/02 01:53 | URL | ≫ EDIT















非公開コメント

TRACKBACK URL

http://delfusa.blog65.fc2.com/tb.php/92-3e47c80e

TRACKBACK

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。