Einträge in Listbox zentrieren

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Einträge in Listbox zentrieren

Beitrag von TRojaner2012 »

Guten Tag,
wie zentriere ich die Einträge in einer Listbox?
Gibt es auch eine einfache Möglichkeit, einzelne Einträge fett zu schreiben?
alles, was ich bis jetzt gefunden habe brachte nur endlos lange Errors mit sich....

Vielen Dank im Vorraus & Grüße

Trotro

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Einträge in Listbox zentrieren

Beitrag von Scotty »

Du musst die Items selbst zeichen (OnDrawItem). Dazu gibt es eine große Menge Anleitungen im Netz.

TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Re: Einträge in Listbox zentrieren

Beitrag von TRojaner2012 »

Hallo & Danke für die schnelle Antwort :)
So weit war ich auch schon. Ich habe aber keine Anleitung gefunden, welche funktioniert hat.
Das ist ja auch mein Problem :D Ansonsten hätte ich kein Thema eröffnet....

Grüße
trotro

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Einträge in Listbox zentrieren

Beitrag von wp_xyz »

Google "Delphi Listbox Ownerdraw" liefert wirklich eine Menge (bei Suchen nach "Lazarus" sollte man auch mal über den Gartenzaun nach "Delphi" schauen), zwar nicht exakt deine Fragestellung, aber damit kommt man weiter.

Wie dem auch sei:
  • Style der Listbox auf lbOwnerDrawFixed setzen
  • Eventhandler für OnDrawItem schreiben

Code: Alles auswählen

 
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  ARect: TRect; State: TOwnerDrawState);
var
  w,h: Integer;
  s: String;
begin
  with Listbox1.Canvas do begin
    s := Listbox1.Items[Index];
    w := TextWidth(s);
    h := TextHeight(s);
    Brush.Style := bsSolid;
    FillRect(ARect);
    TextOut((ARect.Left + ARect.Right - w) div 2, (ARect.Top + ARect.Bottom - h) div 2, s);
  end;
end;
 

TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Re: Einträge in Listbox zentrieren

Beitrag von TRojaner2012 »

Perfekt :)
Vielen Dank für die schnelle Hilfe.
Ich google auch schon oft genug mit ''Delphi'' statt lazarus aber ich habe trotzdem nichts gefunden, was geklappt hat :(

Grüße

trotro

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Einträge in Listbox zentrieren

Beitrag von theo »

Kann man so machen. Aber statt TextOut würde ich TextRect empfehlen.
Mit TTextStyle kann man die Textausgabe noch komfortabler und vielfältiger definieren.

http://lazarus-ccr.sourceforge.net/docs ... trect.html
http://lazarus-ccr.sourceforge.net/docs ... style.html

Antworten