Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - zwei listbox fragen
patrick dee - Do 30.01.03 13:27
Titel: zwei listbox fragen
hi
ich habe zwei fragen zur listbox :
1 ) kann man eine zeile farblich zeigen, ohne draw item zu benutzen ?
beispiel :
kommt in der listbox das wort MERKE vor so soll diese zeile imme gelb sein oder kommt der eintrag 00:00:00 vor, soll diese zeile immer rot sein.
ich kann das draw item nicht verwenden da sonst meine tabulatoren nicht mehr richtig angezeigt werden.
2) Wei stelle ich es an das wenn ich die listbox inhalte lade und in der liste das wort Kontakt vorkommt dieses gelöscht wird ???
danke für eure hilfe
patrick
Delete - Do 30.01.03 14:10
zu 1.) Nein.
zu 2.)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var i : Integer; s : String; begin for i := Listbox1.Items.Count downto 0 do begin s := Listbox1.Items.Strings[Listbox1.ItemIndex] if s := 'Kontakt' then Listbox1.Items.Delete(i); end; |
PS: Das nächste mal kannst du ruhig etwas mehr Mühe verwenden beim Erstellen eines Beitrages. Deiner enthielt so viele Fehler (Grammatik und Rechtschreibung), dass er fast unleserlich ist. :roll: Du erwartest von uns doch auch, dass wir dir eine verständliche Antworte geben, also dürfte es wohl nicht zu viel verlangt sein, das selbe auch von dir zu erwarten. :wink:
Teutobod - Do 30.01.03 14:28
Quelltext
1:
| if s := 'Kontakt' then |
sollte in
if s = 'Kontakt' then
geändert werden
patrick dee - Do 30.01.03 14:31
sorry, habe da etwas geschludert - tut mir leid :oops:
musste aber weg vom pc da daddy ran wollte.
danke trotzdem für die hilfe.
blöd das mit dem einfärben. wenn ich nun doch das drawitem verwende, wie krige ich das mit den tabulatoren hin ? habe eine liste und wenn ich enter drücke wird ein eintrag aus der liste in eine edit geladen und am rechten rand erscheint dann die uhrzeit. hat da jemand ein brauchbares rezept für mich ?
wäre ja möglich
danke
patrick :wink:
Delete - Do 30.01.03 14:34
| Teutobod hat folgendes geschrieben: |
Quelltext 1:
| if s := 'Kontakt' then |
sollte in
if s = 'Kontakt' then
geändert werden |
Hmpf. Da hat irgendwer den Forums-Debugger abgeschaltet. :wink:
Wie wäre es mit einem Listview? Da kannst du Spalten nehmen zum Darstellen der Werte.
smiegel - Do 30.01.03 14:42
Hallo,
schau Dir einmal die Funtion
DrawText der WinApi an.
Eine Möglichkeit mit DrawText das zu realisieren könnte folgendermaßen aussehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var x:Integer; s:String; begin with TListBox(Control), Canvas do begin if (System.Pos('MERKE', Items[Index])>0) then Brush.Color:=clYellow else if (System.Pos('00:00:00', Items[Index])>0) then Brush.Color:=clRed else Brush.Color:=clWhite; x:=System.Pos(#9, Items[Index]); if (x>0) then begin s:=System.Copy(Items[Index], 1, x-1); TextRect(Rect, Rect.Left, Rect.Top, s); s:=System.Copy(Items[Index], x+1, 255); TextOut(Rect.Top, Rect.Right-TextWidth(s)-5, s); end else TextRect(Rect, Rect.Left, Rect.Top, Items[Index]); end; // with end; |
patrick dee - Do 30.01.03 14:45
jo listview den tip hatte ich schon mal aber da blicke gar nicht durch.
meine listen sind text files werden geladen über das tages datum.
das mit listview ging nicht bei mir da ich ja immer diesen glaube ich delimiter brauche 'I' damit listview weiss von wo bis wohin der eintrag pro
zeile geht bzw zelle. da die listen fertig sind kann ich die nun nicht mehr ändern.
patrick
patrick dee - Do 30.01.03 14:46
danke smiegel
das werde ich mal versuchen ... :lol:
patrick dee - Do 30.01.03 16:39
:cry:
also ein wort löschen aus der liste wie oben genannt KONTAKT geht bei so nicht. nun ein bischen code von mir. so lade ich die listen
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TfMain.btnLadeListeClick(Sender: TObject); var datum, s : string; i : integer; begin datum:= FormatDateTime('dd-mm-yy',NOW);
with Playliste do begin BeginUpdate; Clear; LoadFromFile( Tools_Form.Edit1.text + datum + '.ld1' ); EndUpdate; end; Stunde_Form.Show; PRGPanel.Caption := ' P 1 '; If ListBox1.ItemIndex = -1 then exit; end; |
so wähle ich in einer combobox die stunde aus :
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: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| procedure TfMain.ComboBox1Change(Sender: TObject); var Found : boolean; i : integer; s : string; begin Found := False; if( ComboBox1.Text = '24 Uhr' )then begin with ListBox1.Items do begin BeginUpdate; Clear; for i := 0 to Playliste.Count - 1 do Add( Playliste.Strings[ i ]); EndUpdate; end; Abort; end; i := 0; with ListBox1.Items do begin BeginUpdate; Clear; while not Found and( i < Playliste.Count )do begin if( Pos( ComboBox1.Text, Playliste.Strings[ i ]) > 0 )then begin Inc( i ); while not( Pos( ' Uhr', Playliste.Strings[ i ]) > 0 )do begin Add( Playliste.Strings[ i ]); Inc( i ); end; Found := True; end else Inc( i ); end; inc (i); ListBox1.ItemIndex := 3; //Position in der Liste 3 Stelle EndUpdate; end; end; // ComboBox1Change |
und wenn ich die liste lade sollten die zeilen die mit
Kontakt,Bereich,Weiteres gelöscht erden.
ich hoffe das ihr mir helfen könnt
gruß
patrick
smiegel - Do 30.01.03 17:37
Hallo,
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:
| const zumLoeschen:array[0..2] of String=('Kontakt', 'Bereich', 'Weiteres');
procedure TfMain.btnLadeListeClick(Sender: TObject); var datum, s : string; i, j : integer; begin datum:= FormatDateTime('dd-mm-yy',NOW);
with Playliste do begin BeginUpdate; Clear; LoadFromFile( Tools_Form.Edit1.text + datum + '.ld1' ); // ab hier, die überflüssigen Einträge löschen: for i:=Count-1 downto 0 do begin for j:=0 to 2 do if (System.Pos(zumLoeschen[j], Strings[i])>0) then begin Delete(i); Break; end; // for j end; // for i // ---- EndUpdate; end; Stunde_Form.Show; PRGPanel.Caption := ' P 1 '; If ListBox1.ItemIndex = -1 then exit; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!