Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi In Combobox Linien einfügen (https://www.delphipraxis.net/63116-combobox-linien-einfuegen.html)

tom_po 14. Feb 2006 09:37


In Combobox Linien einfügen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe eine TNTCombobox und stelle darin chinesische Wörter dar.

Um es übersichtlicher zu gestalten, möchte ich zwischen den einzelnen Zeilen jeweils eine Linie einfügen. Habe in den Eigenschaften gesucht, aber nichts gefunden...
Wie mache ich das?

tom_po 14. Feb 2006 18:18

Re: In Combobox Linien einfügen
 
Habe in einem anderen Forum dies gefunden, geht aber nicht;

Delphi-Quellcode:
procedure TMainForm.TntComboBox7DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
 with tntcombobox7, tntcombobox7.Canvas do
  begin
    FillRect(rect);
    if Items[index]='_line' then
    begin
      if odSelected in State then Pen.Color := clWindow
      else Pen.Color := clBlack;

      PenPos := Point(Rect.Left, Rect.Top+(ItemHeight div 2));
      LineTo(Rect.Right, Rect.Top+(ItemHeight div 2));
    end else
      TextOut(rect.Left+2,rect.Top,Items[index]);
  end;
end;

procedure TMainForm.TntComboBox7Click(Sender: TObject);
begin
if tntcombobox7.ItemIndex=0 then
output;
if tntcombobox7.ItemIndex=1 then
showinfopessoas;
if tntcombobox7.ItemIndex=2 then
showproddata;
if tntcombobox7.ItemIndex=3 then
showprodlinha;
end;
Style der Kombobox habe ich so geändert:

csOwnerDrawVariable

Khabarakh 14. Feb 2006 18:40

Re: In Combobox Linien einfügen
 
Tolle Fehlerbeschreibung :thumb: .
Hast du denn den Eventhandler überhaupt der Listbox zugewiesen?

tom_po 16. Feb 2006 17:09

Re: In Combobox Linien einfügen
 
Es gibt keine grossartige Fehlerbeschreibung, die Kombobox zeigt einfach keine Linien zwischen den Zeilen.

Was meinst du mit Listbox?

Wie ordnet man das zu?

Khabarakh 16. Feb 2006 18:29

Re: In Combobox Linien einfügen
 
Zitat:

Zitat von tom_po
Es gibt keine grossartige Fehlerbeschreibung, die Kombobox zeigt einfach keine Linien zwischen den Zeilen.

Das reicht doch schon als Fehlerbeschreibung. Das hattest du bis jetzt noch nicht verraten :wink: .

Zitat:

Was meinst du mit Listbox?
Nagut, Combobox, sollte aber nicht viel daran ändern :wink: .

Zitat:

Wie ordnet man das zu?
OI -> DeineCombobox -> Ereignisse -> Bei OnDrawItem deine Methode eintragen

tom_po 18. Feb 2006 11:13

Re: In Combobox Linien einfügen
 
Danke zunächst mal Khabarakh!

Genau das habe ich ja gemacht, weiter oben gepostet, schreibe hier nochmal:

Delphi-Quellcode:
procedure TMainForm.TntComboBox7DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with tntcombobox7, tntcombobox7.Canvas do
  begin
    FillRect(rect);
    if Items[index]='_line' then
    begin
      if odSelected in State then Pen.Color := clWindow
      else Pen.Color := clBlack;

      PenPos := Point(Rect.Left, Rect.Top+(ItemHeight div 2));
      LineTo(Rect.Right, Rect.Top+(ItemHeight div 2));
    end else
      TextOut(rect.Left+2,rect.Top,Items[index]);
  end;
end;
Es ist zwar eine TnTCombobox, aber das sollte egal sein, habe bei ondrawitem eine Methode eingetragen, die ich gefunden hatte, es zeichnet aber nicht die Linien zwischen den Zeilen...

Lasse2002 19. Feb 2006 14:45

Re: In Combobox Linien einfügen
 
Also wenn ich den Style der TntComboBox auf csOwnerDrawFixed setze, dann funktioniert deine Funktion bei mir einwandfrei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz