喫茶XRAYトップページ

[スレッド全体
]

[6157] Re7:TListviewについて返信 削除
2012/7/5 (木) 09:32:14 sato
マスター! 朝早くから申し訳ありません。
igyさん、たてぐやさん、ありがとうございます。
わ・わ・分かりました。
ListView1のReadOnlyが「True」になっていました。
「False」に変えると、「お見事」でした。
出入り禁止にならないように、努力のあとも見せないと。ということで。
ListView1.Items.BeginUpdate;
ListView1.Items.Clear;
ListView1.Items.EndUpdate;
ListView1.Visible:=True;
とやると、ReadOnlyがTrueでもItemsは消えました。

ただ、現象はこうなんですが、「初心者の」私には理屈がサッパリです。
識者の方どうか「●●●」ください。(どこかで見たような)


[6158] Re8:TListviewについて返信 削除
2012/7/5 (木) 10:15:03 igy
質問の最後あたりに、この「識者の方」という表現がまれに使われることがありますが、
これ、「ご存知の方」とかのほうが、私の場合、返信しやすいですね。
(私は識者じゃないから、答えれないのかな・・・とか考えてしまいます。)
まあ、それでも返信する場合、最初に
“識者ではありませんが・・・”とに入れるんですけどね。

▼ satoさん
> ただ、現象はこうなんですが、「初心者の」私には理屈がサッパリです。
> 識者の方どうか「●●●」ください。(どこかで見たような)


[6159] Re8:TListviewについて返信 削除
2012/7/5 (木) 15:16:50 Mr.XRAY
▼ satoさん

> わ・わ・分かりました。

ど・ど・どもくらないで.お・おっ・落ち着いて.
「どもくるなら,しゃべくるな!」というのが,昔の漫才のネタに
ありました.

> ListView1のReadOnlyが「True」になっていました。

おおっ,なるほど.


> とやると、ReadOnlyがTrueでもItemsは消えました。

で,TListViewですが,

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.Items.Clear;
  ListView1.Visible :=True;
end;

のListView1.Items.Clear;は内部で,

  if Owner.HandleAllocated then ListView_DeleteAllItems(Handle);
  (OwnerはListViewで,Handleは,ListViewのItemsのハンドル)

を実行しています.この時,親(Owner)が非表示だと,HandleAllocatedがFalseに
なるようです.したがって,itemsはクリアれないことになります.

一方,

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.Clear;  //ItemsがないClearメソッド
  ListView1.Visible :=True;
end;

とすると,クリアされます.これは,ListView1.Clear;が内部で,
Items.BeginUpdate;を呼び出しています.BeginUpdateは,事実上
HandleAllocatedをTrueにします.
したがって,Itemsがクリアされる,という仕組みのようです.


次に,質問の仕方を「ご教授」いたしましょう(笑).
igyさんも書いている通り.「識者の方」というのは,私の場合も同じです.
一歩引いてしまいます.
「初心者なんですが」というのもいらない思います.
ただ,単に「どうしてなんでしょうか?」とか,
方法はないでしょうか.でいいと思います.

「初心者」を名乗って,「基本的なことで申し訳ないのですが」
と書いている人がいますが,
初心者なのに,何で,それが基本的なのか分かるの?
となってしまいます.初心者なら,基本的なのか,難しいのか分かるわけ
ないだろう? ってね.


話のついでに.
「windows7でZeosLibコンポーネントが使用出来ない。」
http://www.freeml.com/delphi-users/2567/latest

これもレスが付きにくいですね.
まず,ZeosLibコンポというのが分かりません.
で,Googleで調べようとしたら,同じような人がいたみたいで,
入力欄に,ZeosLib Delphiが候補にでてきました(質問された本人かも知れませんが).
いくつか開いてみましたが,よく理解できませんでした.

また,「どなたか同じ様な状況になったことがある方」
というのもマイナスですね.
これだと,このコンポを使ったことがある人以外は,答える資格がないような
印象を与えてしまいます.
たとえ使ったことがなくても,調べてレスしてくれる方はいるものです.
igyさんもそうだと思うのですが,私もそういうレスの方が多いですからね.
何でも,全て知っていて,経験している人なんて,この世の中にいないと
思いますよ.

だから,今回の質問の内容も,こうやって,数人の方が実際にやって,
確認しているのだと思います.
おそらく,このスレッドを見ている方で,実際にやっている人もいるのでは
ないかと思います.

コミュニティの場というのは,基本的に相互扶助,情報交換の場だと,
私は思っています.
だから,「識者」にサポートしてもらう場でもないし,まして「教授」する場
でもないと考えています.

では,以上をもちまして,質問の仕方の「教授」を終了させていただきます.

[6166] Re9:TListviewについて返信 削除
2012/7/5 (木) 22:11:28 Mr.XRAY
> .... 省略
> したがって,Itemsがクリアされる,という仕組みのようです.


これは,Form.Createの時点でVisibleがFalseのときの現象ですが,
これがバグといえるのか,仕様なのかは,ちょっと判断できません.

[6168] Re10:TListviewについて返信 削除
2012/7/6 (金) 13:56:14 sato
▼マスター、みなさん ありがとうございます。
よく分かりました。
これからは、ListView1.Clear;を使うようにします。
>識者の方どうか「●●●」ください。(どこかで見たような)
申し訳ありませんでした。
暖かい店内の空気につられて、つい軽い冗談のつもりでしたが、お騒がせしました。




[6170] Re11:TListviewについて返信 削除
2012/7/6 (金) 14:28:19 sato
▼マスター
しつこくすみませんが、
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.Clear;  //ItemsがないClearメソッド
  ListView1.Visible :=True;
end;
の場合は、ListView1.ReadOnlyがTrueでも
Clearできるのは、
>これは,ListView1.Clear;が内部で,
>Items.BeginUpdate;を呼び出しています.

からなのでしょうか。よろしくお願いします。

[6171] Re12:TListviewについて返信 削除
2012/7/6 (金) 16:12:05 Mr.XRAY
▼ satoさん

> >Items.BeginUpdate;を呼び出しています.
> からなのでしょうか。よろしくお願いします。


だと思います.

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82