Toon posts:

[Delphi] Probleem met ownerdraw combobox

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een combobox waarvan ik de style op csOwnerDrawFixed heb gezet. Normaal gesproken als je bij een combobox de dropdown list uitklapt en weer laat verdwijnen, wordt er een lege blauwe balk zichtbaar in de edit box (als je dus geen item geselecteerd hebt).

Nu heb ik deze code geprobeerd in de OnDrawItem:

Delphi:
1
2
3
4
5
6
7
    if (odComboBoxEdit in State) then
    begin
      Font.Color := clHighlightText;
      Brush.Color := clHighlight;
      FillRect(Rect);
      DrawFocusRect(Rect);
    end;


Maar het werkt niet met deze code. Ik krijg een lege witte edit box met een zwarte lijn er omheen.

Wat doe ik verkeerd?

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

Misschien een inherited aanroep erbij?

If you are not wiping out you are nog pushing enough...


Verwijderd

Topicstarter
Pinda schreef op 04 november 2002 @ 19:16:
Misschien een inherited aanroep erbij?
Uh nee. Inherited heeft te maken dat je bij een override functie de originele functie kan aanroepen.

  • whoami
  • Registratie: December 2000
  • Nu online
Ik heb eens wat zitten spelen, en als ik de code in de ComboBoxChange event zet, dan werkt het wel.
Er moeten blijkbaar wel items in de combobox getoond worden, anders wordt die event niet getriggered.

https://fgheysels.github.io/


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 15:07

Tomatoman

Fulltime prutser

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ComboBox1.Canvas do
  begin
    Brush.Style := bsSolid;
    if odSelected in State then
    begin
      Font.Color := clHighlightText;
      Brush.Color := clHighlight;
    end
    else
    begin
      Font.Color := clWindowText;
      Brush.Color := clWindow;
    end;
    FillRect(Rect);
  end;
end;

Windows tekent zelf al een focus rectangle na afloop van OnDrawItem, dus dat hoef je zelf niet te doen. Als je het toch doet, vallen ze precies over elkaar heen en zie je per saldo niets, want een focus rectangle wordt met een XOR pen getekend.

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
whoami schreef op 04 november 2002 @ 19:34:
Ik heb eens wat zitten spelen, en als ik de code in de ComboBoxChange event zet, dan werkt het wel.
Er moeten blijkbaar wel items in de combobox getoond worden, anders wordt die event niet getriggered.
Wat bedoel je met items in de combobox tonen?

Bedoel je daarmee dat er items aanwezig moeten zijn in de dropdownlist?

Er zijn namelijk items in de dropdownlist.

Het moet gewoon zo worden dat als je met tab de focus zet op de combobox dat je dan gewoon een blauwe geselecteerde balk te zien krijgt. (zelfde als een combobox met als style dropdownlist)
Pagina: 1