Hallo allemaal,
Ik zou graag de border van een ComboBox willen verwijderen, zowel in de gesloten toestand als in de open toestand. De vraag is kan dit en hoe?
Met een vriendelijke groet, Frans
Hallo allemaal,
Ik zou graag de border van een ComboBox willen verwijderen, zowel in de gesloten toestand als in de open toestand. De vraag is kan dit en hoe?
Met een vriendelijke groet, Frans
Voor de border in gesloten toestand:
http://www.swissdelphicenter.ch/en/showcode.php?id=1760
(voor Windows 10 moet het schijnbaar 3 zijn i.p.v. 2)Delphi Code:
uses Windows; procedure TForm1.FormCreate(Sender: TObject); begin SetWindowRgn(ComboBox1.Handle, CreateRectRgn(3, 3, ComboBox1.Width - 3, ComboBox1.Height - 3), True); end;
Of misschien een TComboBox afgeleide waarbij je in de OnPaint diezelfde truc uithaalt
Dit zou dan ook meteen moeten werken voor de open toestand
Dit ziet eruit alsof er je gewoon de border pixels niet tekent.
Makkelijkst is deze afgeleide dezelfde naam te geven (TComboBox = class(TComboBox))
Door deze dan eerder (dacht ik) in de uses te zetten wordt die code dan gebruikt voor TComboBox. Levert je ook meteen uniform gedrag op voor alle comboboxen.
-edit-
Voorbeeld van de WmPaint:
http://delphidabbler.com/tips/84
Alleen ipv de TNoBorderComboBox gewoon TComboBox aanhouden (zie eerdere opmerking).
Objective reality is a delirium caused by lack of alcohol in blood
En laat er nou nét voor de TComboBox geen OnPaint te bestaan
Waarschijnlijk omdat het een OS-component is.
En als die er al zou zijn betwijfel ik of die voor de pulldown ook zou werken want dat is intern in Windows weer een apart component (dropdown).
Edit: Je kunt toch wel de WM_PAINT afvangen maar die doet niets voor de pulldown.
Delphi Code:
type TComboBox = class(StdCtrls.TComboBox) public procedure WMPaint(var Message: TWMPaint); message WM_PAINT; end; // ... procedure TComboBox.WMPaint(var Message: TWMPaint); begin // inherited; end;
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks