![]() |
Listbox markieren
Hallo,
ich möchte in einer Listbox in der z.B. folgende Einträge(nach immer gleichem Muster)sind markieren ob das eingetragene Datum bereits Vergangenheit ist oder nicht: Listbox: ABCDEF_ASSSAA_02.02.03 BBB_BBDB_03.03.06 CCCDDD_CCDDDC_04.04.07 also es sind immer zwei Unterstriche bis zum Datum die Buchstaben vorher haben aber nicht immer die gleiche Länge wie kann ich das machen das das abgelaufene Datum mit dem heutigen verglichen wird und wenn es vorbei ist rot markieren und evtl meldung geben!? Datum ist in Labe1 vorhanden! Vielen Dank im vorraus MfG Christian |
Re: Listbox markieren
Herzlich willkommen in der Delphi-PRAXiS, Christian.
Wenn du der ListBox den Style lbOwnerDrawFixed gibst, dann funktioniert das hier:
Delphi-Quellcode:
Grüße vom marabu
type
TDemoForm = class(TForm) ListBox: TListBox; Memo: TMemo; InitButton: TButton; procedure ListBoxDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); procedure InitButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); private fs: TFormatSettings; end; // ... procedure TDemoForm.ListBoxDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var s: String; dt: TDateTime; begin with Control as TListbox do begin Canvas.FillRect(Rect); s := Copy(Items[Index], Length(Items[Index]) - 7, 8); if TryStrToDate(s, dt, fs) and (dt < Trunc(Date)) then begin Canvas.Brush.Color := clRed; Canvas.Font.Color := clWhite; end else begin Canvas.Brush.Color := clWhite; Canvas.Font.Color := clBlack; end; Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]); end; end; procedure TDemoForm.FormCreate(Sender: TObject); begin GetLocaleFormatSettings(GetUserDefaultLCID, fs); fs.DateSeparator := '.'; fs.ShortDateFormat := 'dd.mm.yy'; end; |
Re: Listbox markieren
Hallo,
danke für die schnelle antwort ich habe ein Problem mit folgendem Satz: Zitat:
MfG Christian |
Re: Listbox markieren
...ich nochmal;
Zitat:
MfG Christian |
Re: Listbox markieren
Vergleiche mal unsere Delphi-Versionen - deine hast du ja nicht angegeben. Bei mir genügt das Einbinden der Units SysUtils und Windows.
marabu |
Re: Listbox markieren
Ich benutze noch Delphi 5
|
Re: Listbox markieren
Dann benutze GetFormatSettings() anstatt GetLocaleFormatSettings().
Gute Nacht. marabu |
Re: Listbox markieren
Sorry aber das funktioniert nicht! Zeigt immernoch fehler an
|
Re: Listbox markieren
Dann Schluss mit blinde Kuh - wo ist dein Code?
PS: Habe deinen Code untersucht und festgestellt, dass da noch einige Unterschiede zwischen D5 und D7 sind. Hier hast du einen Ersatz für das fehlende TryStrToDate():
Delphi-Quellcode:
Die TFormatSettings gibt es noch nicht, es wird noch mit globalen Einstellungen gearbeitet. Den Aufruf von GetFormatSettings kannst du dir dann sparen. Das hier ist aber noch nötig - sicher ist sicher:
function TryStrToDate(const s: String; var dt: TDateTime): Boolean;
begin try dt := StrToDate(s); Result := true; except Result := false; end; end;
Delphi-Quellcode:
Du kannst die von dir benutzte Delphi-Version übrigens in dein DP USer-Profil eintragen.
DateSeparator := '.';
ShortDateFormat := 'dd.mm.yy'; Freundliche Grüße vom marabu |
Re: Listbox markieren
Hi,
bin jetzt erst zum probieren gekommen! Das funktioniert immer noch nicht ganz! Kann man den kompletten Text nicht einfach per Button auf das Datum durchsuchen und jedes Item das den Text des Labels1 enthält rot markieren??? Label1.Caption = heutiges Datum MfG Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz