![]() |
mußt Du mir das wirklich antun? Jetzt muß ich mir das doch tatsächlich noch durchlesen. Das Bild sieht nämlich gut aus und wenn ich das allgemeingültig hinkriege ists auch gut.
|
Hallo Hansa,
gute Idee! (Das mit dem Verallgemeinern) Hier mein eine erste optimierte Version:
Code:
mfg
{ lbxOrt.Style muß auf lbOwnerDrawFixed gesetzt sein für eigene Auswahlliste
Ergebnis: 2-spaltige Tabelle (mehr ist möglich Nachteil: der Sprung auf den bereits eingegebenen Ort erfolgt nicht } procedure TFKasse.lbxOrtDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); const mx = 2; // = Anzahl der Spalten arrWidth : array[0..mx] of integer = (0,120,150); var strVal, strAll : string; i, pos1 : integer; rc : TRect; begin lbxOrt.Canvas.Brush.Style := bsSolid; lbxOrt.Canvas.FillRect(Rect); // nur zur Sicherheit: arrWidth[mx] := lbxOrt.Width; // oben und unten bleiben unverändert rc.Top := Rect.Top; rc.Bottom := Rect.Bottom; { Die einzelnen Spalten müssen durch ';' getrennt sein } strAll := lbxOrt.Items[Index]; // z.B.: "Ortename;12345" for i := 0 to High(arrWidth) - 1 do begin { Zeichenbereich für erste Spalte } rc.Left := Rect.Left + arrWidth[i] + 2; rc.Right := Rect.Left + arrWidth[i+1] - 2; { Text für erste Spalte ausfiltern } pos1 := Pos(';', strAll); if pos1 > 0 then strVal := Copy(strAll, 1, pos1 - 1) else strVal := strAll; { Text ausgeben } lbxOrt.Canvas.TextRect(rc, rc.Left, rc.Top, strVal); { Trennlinie zwischen Spalten zeichnen } lbxOrt.Canvas.MoveTo(rc.Right, rc.Top); lbxOrt.Canvas.LineTo(rc.Right, rc.Bottom); { Text für nächste Spalte ausfiltern } strAll := Copy(strAll, pos1 + 1, Length(strAll) - pos1); end; end; eddy |
|
Hallo Daniel,
hast Du das getestet? Bisher halte ich noch nicht viel davon. 1. habe ich jetzt keine Spalten mehr sondern nur noch: Ortname^I09000 statt Ortname 09000 und 2. hätte ich gern unterschiedlich breite Spalten, weil für die Plz weniger Platz benötigt wird wie für den Ort. mfg eddy |
Hallo eddy,
Zitat:
Zitat:
Zitat:
Aber für Hansa würde es doch langen, wenn Du Dich schon nicht damit zufrieden gibst, aber Du musst zugeben, es ist deutlich kürzer als Dein Code. ;) Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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-2025 by Thomas Breitkreuz