Thema: Delphi ListBox

Einzelnen Beitrag anzeigen

value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#18

AW: ListBox

  Alt 6. Jun 2014, 11:14
@baumina

Sorry ich verstehs echt nicht... Aber wenn ich mir deinen Code ansehe:

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem
    (Control: TWinControl; Index: Integer;
    Rect: TRect; State: TOwnerDrawState) ;
 var
    myColor: TColor;
    myBrush: TBrush;
 begin
    myBrush := TBrush.Create;
    with (Control as TListBox).Canvas do
    begin
(* das machen wir raus
      if not Odd(Index) then
        myColor := clSilver
      else
        myColor := clYellow;
*)

      // und das machen wir stattdessen rein
      If InDB(Index) then // die Funktion InDB musst dann noch schreiben, diese schaut in der DB nach und gibt True zurück wenn der Item in der DB gefunden wurde
        myColor := clYellow
      else
        myColor := clWhite;
        
      myBrush.Style := bsSolid;
      myBrush.Color := myColor;
      Windows.FillRect(handle, Rect, myBrush.Handle) ;
      Brush.Style := bsClear;
      TextOut(Rect.Left, Rect.Top,
              (Control as TListBox).Items[Index]) ;
      MyBrush.Free;
    end;
 end;
Dann müsste ich mir eine Funktion schreiben die zb Folgendes tut: (ganz grob)
- Datenbank connect
- überprüfen ob user vorhanden (true od. false returnen)
- Disconnect

Das Problem ist aber, das der User zuerst die Liste anlegen muss. Dann gibt es eine Art "Execute" Button und in dieser Prozedur werden dann etliche Datenbankspezifische Dinge
durchgeführt (abfragen, updates, inserts etc.). Wenn es hier ein Problem gibt zB. User nicht vorhanden, Färbe das Item yellow, bei SQL Update Fehler red und bei success green.

Dh. ich bräuchte die Möglichkeit in meiner "SQL-Funktion", sprich wenn ich die Liste abarbeite das Item[x] nachträglich zu ändern.

Sorry falls ich mich blöd stelle. Habe mich vorhin mit OnDrawItem gespielt und der einzige Erfolg war, das ich beim !Hinzufügen! die Farbe ändern kann, jedoch nicht bei einem bestehenden. oder wie gesagt ich bin zu blöd ^^

LG
  Mit Zitat antworten Zitat