Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - ListBox mit Spalten oder Farbänderung
patrick dee - Di 17.12.02 16:37
Titel: ListBox mit Spalten oder Farbänderung
hi leute
ich hänge immer noch an einem ListBox Problem.
Ich wähle mit der enter Taste einen entrag aus und zeige diesen
in einer Edit an. Das geht alles pefekt. Nun der Knackpunkt :
Wenn ich Enter gedrückt habe soll am Ende der Zeile die aktuelle Uhrzit erscheinen und wenn es geht in rot und Fett.
Ich kriege es einfach nicht hin. Oder gibt es einen Weg der ListBox zu sagn das wenn Enter gedrückt wurde, das nach 80 Zeichen die Zeit
timetostr(now); eigefügt werden soll. So hätte ich die Zeiten immer untereinander egal wie lang die Zeile in der ListBox ist.
Wäre schön wenn mir jemand bei der Lösung Helfen könnte. Habe auch mal was mit ListBox zeichnen gesehen komme aber damit nicht ganz klar.
Oder gibt es im Internet ein gutes Tutorial was man alles mit einer ListBox anstellen kann.
gruß
patrick
Titel angepasst von Klabautermann.
Keldorn - Di 17.12.02 18:05
Hallo,
dir wurden doch schon haufen tips gegeben. Mit einer Suche hättest du auf alle Fälle was passendes gefunden, wie man ein Item selber zeichnet.
Oder ein Listview verwenden.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); Var s1,s2:string; i:integer; begin //nicht vergessen, Style der listbox auf ownerdrawfixed stellen with (Control as Tlistbox) do begin //den string "splitten" i:=pos(' - ',Items[Index]); if i=0 then s1:=Items[Index] //kein trennzeichen gefunden, s1=item else s1:=copy(Items[Index],1,i); s2:=copy(Items[Index],i+3,20);
//Zellhintergrund, wenn markiert, andere Farbe if odselected in State then Canvas.brush.color:=clblue else Canvas.brush.color:=clwhite; Canvas.Fillrect(rect);
//ersten string ausgeben Canvas.Font.color:=clblack; Canvas.textout(Rect.Left+ 2, Rect.Top, s1);
if i>0 then begin //zweiten string rot ausgeben rechtsbündig ausgeben Canvas.Font.color:=clred; Canvas.textout(Rect.right- 50, Rect.Top, s2); end;
end; end; |
...nur so auf die Schnell geklimpert und die Sache mnit dem Splitten baut auf den damaligen post von mir auf .
Mfg Frank
foxy - Di 17.12.02 23:14
jo geb ich keldron recht nur eins ...
Quelltext
1: 2: 3:
| //Zellhintergrund, wenn markiert, andere Farbe if odselected in State then Canvas.brush.color:=clblue else Canvas.brush.color:=clwhite |
wenn du das so machst wird nicht nur deine Zeit blau sonder die ganze zeile ... das iss nich sinn oder willst du das so??
wenn nich dann versuch ma mit
copy bis zum 81 zeichen weg zu schneiden das dann einfärben müsste gehn ... aber keine garantie
Klabautermann - Mi 18.12.02 00:41
Hallo,
bei anspruchsvolleren Listenaufgaben würde ich dir zu tListView raten. Das kann wesentlich mehr als eine ListBox. Spalten sind dort kein Problem, auch das Unfärben (auch einzelner Spalten) ist verhältnismäßig leicht.
Gruß
Klabautermann
Keldorn - Mi 18.12.02 09:22
Hallo
foxy hat folgendes geschrieben: |
wenn du das so machst wird nicht nur deine Zeit blau sonder die ganze zeile ... das iss nich sinn oder willst du das so??
|
natürlich will ich das so: die aktuell ausgewählte Zeile soll einen kompletten blauen
Hintergrund haben, sonst einen weißen. Das hat nix mit der roten Schrift der Zeit zu tun. besser wäre natürlich hier color:=clHighlight zu setzen, bin mir aber nicht sicher, welches die richtige Fabre ist.
patrick dee hat folgendes geschrieben: |
Wenn ich Enter gedrückt habe soll am Ende der Zeile die aktuelle Uhrzit erscheinen und wenn es geht in rot und Fett.
|
er will ja nur die Zeit rot und fett (ups, habsch vergessen -> Canvas.font.Style setzen)
Klabautermann hat folgendes geschrieben: |
bei anspruchsvolleren Listenaufgaben würde ich dir zu tListView raten. Das kann wesentlich mehr als eine ListBox. Spalten sind dort kein Problem, auch das Unfärben (auch einzelner Spalten) ist verhältnismäßig leicht.
|
Eben, wurde ihm schon mehrmals geraten. Aber das hat andere Gründe (letzte Posts) warum er Listview nicht verwendet (denke ich). Aber wenn er bei der Listbox mit Umfärben nicht klarkommt schafft er das mit dem Listview auch nich.
Mfg Frank
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!