Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Button in Listview funct nicht (https://www.delphipraxis.net/146835-button-listview-funct-nicht.html)

IIIMADDINIII 27. Jan 2010 18:31


Button in Listview funct nicht
 
Hi,

ich will in einer lisviewkomponente ein button darstellen. dafür benutze ich ddiesen code:

Delphi-Quellcode:
  r := it.DisplayRect(drBounds);
  r.left := r.Left + Listview1.columns[1].Width + listview1.Columns[0].Width;
  r.right := r.Left + Listview1.columns[2].Width;
  bt := TButton.Create(self);
  bt.Parent := listview1;
  bt.BoundsRect := r;
  bt.Caption := 'optionen';
  bt.OnClick := optionenclick;
  it.Data := bt;
blos der button wird ca. nur eine millisecunde dargestellt. manchmal sieht man ihn deshalb nicht.

woran könnte das liegen?
ich brauche hilfe :hi:

ich danke für jede hilfe

toms 28. Jan 2010 04:47

Re: Button in Listview funct nicht
 
Hallo

Wo wird der Code aufgerufen? Im OnCreate oder...?
Anhand deines Codeauszuges kann man nicht erkennen, warum der Button nur kurz angezeigt wird.
Bitte zeige den ganzen relevanten Code.

RWarnecke 28. Jan 2010 06:38

Re: Button in Listview funct nicht
 
Ich stelle mir auch noch die Frage, in welcher Spalte soll der Button angezeigt werden ?

IIIMADDINIII 28. Jan 2010 07:01

Re: Button in Listview funct nicht
 
der button soll in der dritten spalte angezeigt werden.

und das ist die komplette prozedur:

Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  bt: Tbutton;
  r: Trect;
  it: TlistItem;
begin
  if athread.Connection.ReadLn = 'ok' then
  begin
  it := listview1.Items.add;
  it.Caption := athread.Connection.Socket.Binding.PeerIP;
  it.SubItems.add(sendtcp('gamename', idtcpclient1, athread.Connection.Socket.Binding.PeerIP));

  r := it.DisplayRect(drBounds);
  r.left := r.Left + Listview1.columns[1].Width + listview1.Columns[0].Width;
  r.right := r.Left + Listview1.columns[2].Width;
  bt := Tbutton.Create(self);
  bt.OnClick := optionenclick;
  bt.Parent := listview1;
  bt.Caption := 'optionen';
  it.Data := bt;
  end;
end;
das ist eine antwort auf einen Broadcast. Ich wollte die einzelnen spieleserver in der listview mit einem Button ergenzen, wo man die einzelnen ditails sieht.

hoika 28. Jan 2010 07:48

Re: Button in Listview funct nicht
 
Hallo,

das geht so nicht.
Sobald WM_PAINT (Paint) aufgerufen wird, überschreibt die ListView den Button wieder.

Ich würde mal TVirtualStringTree nehmen.
In den Bsp.-en sollte sich auch dafür schon fertiger Code befinden.

Mal ein Link in etwa deiner Richtung
1

(gefunden per Google "button in tlistview")


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz