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 HeaderControl.parent := Listbox (https://www.delphipraxis.net/50749-headercontrol-parent-%3D-listbox.html)

protonix 30. Jul 2005 23:17


HeaderControl.parent := Listbox
 
Habe ein problem damit und zwar ist die HeaderControl in der listbox aber wie kann ich der listbox sagen das der erste eintrag direkt unter die HeaderControl kommen soll nämlich so wie es jetz iss das da nen kleines bissl text unter der headercontrol rausschaut das sieht irgendwie unschicklich aus

MfG
Protonix

Die Muhkuh 31. Jul 2005 07:40

Re: HeaderControl.parent := Listbox
 
Hi,

für deinen Zweck, würde ich dir die TListView empfehlen. Wenn du deren Style auf vsReport stellst, dann hast du oben einen Header und kannst drunter deine Items einfügen.

protonix 31. Jul 2005 13:20

Re: HeaderControl.parent := Listbox
 
Hi danke für den Tipp mache es gerade mit TListView aber kann man irgendwie bei der Listview machen das der komplette eintrag von links bis ganz rechts makiert ist ?

MfG
Protonix

Die Muhkuh 31. Jul 2005 13:26

Re: HeaderControl.parent := Listbox
 
Hi,

im OI gibt es eine Eigenschaft, die heißt Delphi-Referenz durchsuchenRowSelect. Einfach auf true stellen.

protonix 31. Jul 2005 13:58

Re: HeaderControl.parent := Listbox
 
Hey Danke :)

wenn ihr mir bei einer sache noch helfen könntet währe ich glücklich und zwar

Delphi-Quellcode:
 
procedure TmainForm.Btn1Click(Sender: TObject);
begin  
    ListView1.AddItem('Test1', pointer(clred));
    ti := ListView1.Items.Count - 1;
    with ListView1.Items[ti] do
    begin
      SubItems.Add('Test2');
      SubItems.Add('Test3');
      SubItems.Add('Test4');
      SubItems.Add('Test5');
    end;
end;
Funzt alles schön und gut aber kann man jetz als nächstes subitem z.b. 3 bildchen statt text in die ListView einfügen? und vieleicht so das subitem 3 grün und fett ist ?

Sorry für die dummen fragen aber bin delphi umsteiger :D

MfG Protonix

SirThornberry 31. Jul 2005 14:13

Re: HeaderControl.parent := Listbox
 
das geht. Dafür kannst du das Event "OnAdvancedCustomDrawSubItem" nutzen. In der Hilfe steht auch noch etwas dazu.
Mit folgendem Source kann man zum beispiel den Hintergrund der zweiten Spalte einfärben
Delphi-Quellcode:
procedure TForm1.ListView1AdvancedCustomDrawSubItem(
  Sender: TCustomListView; Item: TListItem; SubItem: Integer;
  State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
var LRect: TRect;
begin
  if (SubItem = 1) then
  begin
    DefaultDraw := False;
    Sender.Canvas.Brush.Color := clBlue;
    LRect := Item.DisplayRect(drBounds);
    LRect.Right := Min(Sender.Column[0].Width + Sender.Column[1].Width, LRect.Right);
    LRect.Left := Min(Sender.Column[0].Width, LRect.Right);
    Sender.Canvas.FillRect(LRect);
  end else
    DefaultDraw := True;
end;
ein bild geht ebenso einfach. du musst nur "Sender.Canvas.FillRect(LRect)" austauschen mit
Delphi-Quellcode:
Sender.Canvas.StretchDraw(LRect, Image1.Picture.Bitmap);
die Zeile "Sender.Canvas.Brush.Color := clBlue;" kannst du in dem fall natürlich auch weg lassen.

protonix 31. Jul 2005 19:55

Re: HeaderControl.parent := Listbox
 
Liste der Anhänge anzeigen (Anzahl: 1)
hey danke habs geschafft aber irgendwie noch nicht so richtig

Delphi-Quellcode:
procedure TmainForm.ArtikelVerkauftAdvancedCustomDrawSubItem(
  Sender: TCustomListView; Item: TListItem; SubItem: Integer;
  State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
  var LRect: TRect;
      tw: integer;
begin
   if (SubItem = 4) then begin
    DefaultDraw := false;
    Sender.Canvas.Font.Style := [fsBold];
    Sender.Canvas.Font.Color := clGreen;
    LRect := Item.DisplayRect(drBounds);
    LRect.Left := LRect.Left + Sender.Column[0].Width + Sender.Column[1].Width + Sender.Column[2].Width +Sender.Column[3].Width;
    LRect.Right := LRect.Left + Sender.Column[4].Width;
    Sender.Canvas.TextRect(LRect, Lrect.Left,LRect.Top,Item.SubItems[3]);
   end else begin
    Sender.Canvas.Font.Style := [];
    DefaultDraw := true;

   end;

end;
Wird grün und fett eigentlich alles ok ABER wenn ich den eintrag makiere wird das wo grün und fett ist nicht makiert so wie als hätte es nen weissen hintergrund...

Weiss jemand wie ich das koriigieren kann ??

hier mal nen bild

SirThornberry 31. Jul 2005 21:31

Re: HeaderControl.parent := Listbox
 
die Markierung musst du dann auch selbst mit malen. Ob ein Item Selectiert ist findest du mit dem State parameter heraus.
Delphi-Quellcode:
procedure TForm1.ListView1AdvancedCustomDrawSubItem(
  Sender: TCustomListView; Item: TListItem; SubItem: Integer;
  State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
var LRect: TRect;
begin
  if (SubItem = 1) then
  begin
    DefaultDraw := False;
    if cdsSelected in State then //wenn Item selektiert=Hintergrund farbig
      Sender.Canvas.Brush.Color := clHighlight
    else //ansonsten hintergrundfarbe des Listviews verwenden
      Sender.Canvas.Brush.Color := TListView(Sender).Color;
    LRect := Item.DisplayRect(drBounds);
    LRect.Right := Min(Sender.Column[0].Width + Sender.Column[1].Width, LRect.Right);
    LRect.Left := Min(Sender.Column[0].Width, LRect.Right);
    Sender.Canvas.FillRect(LRect);
  end else
    DefaultDraw := True;
end;

protonix 31. Jul 2005 21:54

Re: HeaderControl.parent := Listbox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey THX ;)

wenne mir noch sagen kannst wie ich das repainren kann wenn ich oben den regler verschiebe wäre ich glücklich habe schon

[delphi]procedure TmainForm.ArtikelVerkauftResize(Sender: TObject);
begin
ArtikelVerkauft.Refresh;
ArtikelVerkauft.Repaint;
end;[delphi]

aber irgendwie verzieht es beim verschieben einer column...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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