ComboBox i indeks górny

0

Czy jest możliwość wyświetlania w comboboxie listy zawierającej nazwy
z indeksem górnym.
Przekopałem internet i wyskakuje tylko jak to zrobić w RichEdicie ale to już wiedziałem. Sądzę że jezeli jest to do zrobienia w ComboBoxie to nie będzie to takie łatwe jak w RichEdit. Może coś z wykorzystaniem Canvas, ale jak?
Proszę o pomoc ;-)

0

Ustaw Style na csOwnerDrawFixed oraz zwiększ ItemHeight w zależności od użytej czcionki.

Następnie w zdarzeniu OnDrawItem:

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  StringWidth: Integer;
  Napis: String;
begin
  Napis:= 'indeks górny';
  with ComboBox1.Canvas do
  begin
    Brush.Color:= clWhite;
    FillRect(Rect);
    Font.Size:= 12;
    TextOut(Rect.Left + 2, Rect.Top+4, ComboBox1.Items[Index]);
    StringWidth:= TextWidth(ComboBox1.Items[Index]);
    Font.Size:= 8;
    TextOut(Rect.Left + StringWidth + 4, Rect.Top+2, Napis);
  end;
end;
0

Dzięki [green]

0

a da się zrobić coś takiego w "label" nie tworząc drugiego "label"??

jestem początkujący

0

da się po prostu musisz ręcnie obsłużyć rysowanie komponentu podobnie ja w przykładzie który podał ci AdamPL.

0

Też mnie to interesuje tylko, że label nie ma zdarzenia dotyczącego rysowania...

0

kocham ten sposob:

type
  TLabel = class(StdCtrls.TLabel)
  public
    procedure Paint; override;
end;

{...}

procedure TLabel.Paint;
begin
  self.Canvas.LineTo(10, 10);
end;
0

No tak, tylko, że nic mi nie rysuje...

0

Dobra, pokombinuje sobie. Bo potrzebuje czegoś takiego?

0

hmm.... procedura jest wywolywana w odpowiednim momencie ale faktycznie niec nie rysuje.
wyglada na to ze powinienes rysowac nie na canvasie labelu tylko bezposrednio na canvasie formy (parenta) :|

0

Jak to nie rysuje u mnie Delphi 7, Windows XP wszystko działa.

EDIT//
Sprawdziłem i faktycznie z LineTo coś nie tak ale TextOut a przecież o to chodzi pytającemu działa :)

procedure TLabel.Paint;
const
  s = 'Test';
begin
  SetBKMode(self.Canvas.Handle, Windows.TRANSPARENT);
  self.Canvas.TextOut(2, 2, s);
end;
0
kAzek napisał(a)

Wiem że TLabel to nie komponent graficzny ale dziedziczy po TGraphicControl ma Canvas więc można rysować ;)

Pewnie - rower to też pojazd więc nic nie stoi na przeszkodzie, żeby w zimę dopiąć do niego pług i odśnieżać.

Mnie zawsze zastanawia co kieruje ludźmi, którzy próbują na siłę wykopać dołek kartką papieru zamiast wziąć szpadel/koparkę i narzekają, że ta kartka to taka toporna, że się zgina, że ciężko idzie, że w ogóle to ta kartka do d**y jest i do niczego się nie nadaje. Naucz się najpierw używać narzędzi (tu komponentów) zgodnie z ich przeznaczeniem a dopiero potem narzekaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1