![]() |
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 |
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. |
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 |
Re: HeaderControl.parent := Listbox
|
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:
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 ?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; Sorry für die dummen fragen aber bin delphi umsteiger :D MfG Protonix |
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:
ein bild geht ebenso einfach. du musst nur "Sender.Canvas.FillRect(LRect)" austauschen mit
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;
Delphi-Quellcode:
die Zeile "Sender.Canvas.Brush.Color := clBlue;" kannst du in dem fall natürlich auch weg lassen.
Sender.Canvas.StretchDraw(LRect, Image1.Picture.Bitmap);
|
Re: HeaderControl.parent := Listbox
Liste der Anhänge anzeigen (Anzahl: 1)
hey danke habs geschafft aber irgendwie noch nicht so richtig
Delphi-Quellcode:
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...
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; Weiss jemand wie ich das koriigieren kann ?? hier mal nen bild |
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; |
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 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz