Autor Beitrag
patrick dee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: Do 30.01.03 13:27 
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

_________________
Glauben heißt nichts wissen ...


Zuletzt bearbeitet von patrick dee am Do 30.01.03 14:20, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 30.01.03 14:10 
zu 1.) Nein.

zu 2.)
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 55



BeitragVerfasst: Do 30.01.03 14:28 
ausblenden Quelltext
1:
if s := 'Kontakt' then					


sollte in
 if s = 'Kontakt' then
geändert werden
patrick dee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: 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:

_________________
Glauben heißt nichts wissen ...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 30.01.03 14:34 
Teutobod hat folgendes geschrieben:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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:

ausblenden 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;

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)


Zuletzt bearbeitet von smiegel am Do 30.01.03 17:30, insgesamt 1-mal bearbeitet
patrick dee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: 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

_________________
Glauben heißt nichts wissen ...
patrick dee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: Do 30.01.03 14:46 
danke smiegel

das werde ich mal versuchen ... :lol:

_________________
Glauben heißt nichts wissen ...
patrick dee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: 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

ausblenden 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 :

ausblenden volle Höhe 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

_________________
Glauben heißt nichts wissen ...
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Do 30.01.03 17:37 
Hallo,

ausblenden volle Höhe 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;

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)