AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

HeaderControl.parent := Listbox

Ein Thema von protonix · begonnen am 31. Jul 2005 · letzter Beitrag vom 31. Jul 2005
Antwort Antwort
protonix

Registriert seit: 23. Jul 2005
6 Beiträge
 
#1

HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 00:17
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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 08:40
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.
  Mit Zitat antworten Zitat
protonix

Registriert seit: 23. Jul 2005
6 Beiträge
 
#3

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 14:20
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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 14:26
Hi,

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

Registriert seit: 23. Jul 2005
6 Beiträge
 
#5

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 14:58
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

MfG Protonix
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 15:13
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
Sender.Canvas.StretchDraw(LRect, Image1.Picture.Bitmap); die Zeile "Sender.Canvas.Brush.Color := clBlue;" kannst du in dem fall natürlich auch weg lassen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
protonix

Registriert seit: 23. Jul 2005
6 Beiträge
 
#7

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 20:55
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
Miniaturansicht angehängter Grafiken
beispiel_211.gif  
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 22:31
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
protonix

Registriert seit: 23. Jul 2005
6 Beiträge
 
#9

Re: HeaderControl.parent := Listbox

  Alt 31. Jul 2005, 22:54
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...
Miniaturansicht angehängter Grafiken
beispiel_163.gif  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 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