Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Addera kryssrutor i en TComboBox
|
Kategori: Komponenter
Inlagt: 2006-12-23
Läst: 1276
Inlagt av: Staffan Berg
|
Beskrivning |
Detta exempel lägger till kryssrutor i en TComboBox.
|
Kod |
//Set ComboBox.Style:=csOwnerDrawFixed //tested with D6 and WinXP... //..... private Selected: array of Boolean; //..... procedure TTForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin SetLength(Selected, TComboBox(Control).Items.Count); with TComboBox(Control).Canvas do begin FillRect(rect); Rect.Left := Rect.Left + 1; Rect.Right := Rect.Left + 13; Rect.Bottom := Rect.Bottom; Rect.Top := Rect.Top; if not (odSelected in State) and (Selected[Index]) then DrawFrameControl(Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_CHECKED or DFCS_FLAT) else if (odFocused in State) and (Selected[Index]) then DrawFrameControl(Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_CHECKED or DFCS_FLAT) else if (Selected[Index]) then DrawFrameControl(Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_CHECKED or DFCS_FLAT) else if not (Selected[Index]) then DrawFrameControl(Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_FLAT); TextOut(Rect.Left + 15, Rect.Top, TComboBox(Control).Items[Index]); end; end; procedure TForm1.ComboBox1Select(Sender: TObject); var i: Integer; Sel: string ; begin Sel := EmptyStr; Selected[TComboBox(Sender).ItemIndex] := not Selected[TComboBox(Sender).ItemIndex]; for i := 0 to TComboBox(Sender).Items.Count - 1 do if Selected[i] then Sel := Sel + TComboBox(Sender).Items[i] + ' '; ShowMessage(Sel); //Just for test... end;
|
|
|