TComboBox, Items rechtsbüngig?
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
TComboBox, Items rechtsbüngig?
Hallo,
suche eine Möglichkeitkeit in einigen TComboBoxen die Items rechtsbündig oder zentriert auszugeben. Ich denke, dass ich dafür die "OnDrawItem" dafür verwenden sollte. Unter Delphi hatte ich eine Routine, die funktioniert jedoch nicht im Lazarus. Kann mir Jemand da helfen?
Danke.
suche eine Möglichkeitkeit in einigen TComboBoxen die Items rechtsbündig oder zentriert auszugeben. Ich denke, dass ich dafür die "OnDrawItem" dafür verwenden sollte. Unter Delphi hatte ich eine Routine, die funktioniert jedoch nicht im Lazarus. Kann mir Jemand da helfen?
Danke.
Re: TComboBox, Items rechtsbüngig?
Grundsätzlich müsste es so gehen, wenn du Style auf csOwnerDrawFixed stellst.
Da kann man natürlich noch viel dran feilen.
Da kann man natürlich noch viel dran feilen.
Code: Alles auswählen
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
var ATS:TTextStyle;
CB:TComboBox;
begin
CB:=Control as TComboBox;
CB.Canvas.FillRect(ARect);
if Odd(Index) then
ATS.Alignment:=taRightJustify else
ATS.Alignment:=taCenter;
CB.Canvas.TextRect(ARect,0,0,CB.Items[Index], ATS);
end;
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TComboBox, Items rechtsbüngig?
Hallo Theo,
so in etwa hatte ich es auch in Delphi. Aber auch in Deinem Beispiel wirft der Compiler Fehler aus. Schon bei : var ATS:TTextStyle; heißt es Error: Identifier not found "TTextStyle".
Gruß, Luckner
so in etwa hatte ich es auch in Delphi. Aber auch in Deinem Beispiel wirft der Compiler Fehler aus. Schon bei : var ATS:TTextStyle; heißt es Error: Identifier not found "TTextStyle".
Gruß, Luckner
Re: TComboBox, Items rechtsbüngig?
Sehr merkwürdig.
Hast du etwa die unit "Graphics" nicht in der "uses"?
Die müsste bei einem neuen Projekt eigentlich dabei sein.
Hast du etwa die unit "Graphics" nicht in der "uses"?
Die müsste bei einem neuen Projekt eigentlich dabei sein.
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TComboBox, Items rechtsbüngig?
Hallo Theo,
es stimmt, Graphics fehlte. Leider ist der Text immernoch linksbündig.
Gruß, Luckner
es stimmt, Graphics fehlte. Leider ist der Text immernoch linksbündig.
Gruß, Luckner
-
- Beiträge: 609
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: TComboBox, Items rechtsbüngig?
Hallo Luckner,
keine Ahnung ob das eine Musterlösung ist aber ich mach es so:
Viele Grüße
Bernd
keine Ahnung ob das eine Musterlösung ist aber ich mach es so:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
ComboBox1 : TCombobox;
procedure FormCreate(Sender: TObject);
procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1 := TCombobox.Create(self);
ComboBox1.Parent := self;
ComboBox1.Left := 20;
ComboBox1.Top := 20;
ComboBox1.Style := CsOwnerDrawFixed;
ComboBox1.Items.Add('Apfel ');
ComboBox1.Items.Add('Birne ');
ComboBox1.Items.Add('Kiwi ');
ComboBox1.Items.Add('Kirsche ');
ComboBox1.Items.Add('Pflaume ');
ComboBox1.Text := ComboBox1.Items[0];
ComboBox1.OnDrawItem:= @ComboBox1DrawItem;
end;
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
var aTS :TTextStyle;
aCB :TComboBox;
begin
aCB := Control as TComboBox;
aTS.Alignment := taRightJustify;
aCB.Font.Color := clBlue;
aCB.Canvas.TextRect(ARect,0,0,aCB.Items[Index], aTS);
end;
end.
Bernd
- Dateianhänge
-
project1.zip
- (105.6 KiB) 64-mal heruntergeladen
-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TComboBox, Items rechtsbüngig?
Guten Morgen wennerer,
hatte Dein Beispiel übernommen und es hatte erst nicht funktioniert. Dann die Zip-Datei entpackt und Dein Projekt funktionierte. Also vergliche und siehe:
ComboBox1.Style := CsOwnerDrawFixed;
daran lag es . Jetzt geht es . Prima. Vielen Dank.
Gruß, Luckner
hatte Dein Beispiel übernommen und es hatte erst nicht funktioniert. Dann die Zip-Datei entpackt und Dein Projekt funktionierte. Also vergliche und siehe:
ComboBox1.Style := CsOwnerDrawFixed;
daran lag es . Jetzt geht es . Prima. Vielen Dank.
Gruß, Luckner
Re: TComboBox, Items rechtsbüngig?
Luckner hat geschrieben: Sa 12. Nov 2022, 05:04 Also vergliche und siehe:
ComboBox1.Style := CsOwnerDrawFixed;
daran lag es . Jetzt geht es . Prima. Vielen Dank.

Das stand im ersten Satz der ersten Antwort in diesem Thread.
Wer lesen kann...

-
- Beiträge: 88
- Registriert: Sa 18. Jan 2020, 09:56
- OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
Re: TComboBox, Items rechtsbüngig?
Stimmt. War nie meine Stärke. Danke.
Luckner
Luckner