konto usunięte

Temat: Wyłączenie możliwości selected w CheckListBox

Witam,

ma ktoś może pomysł jak wyłączyć możliwość opcji zaznaczenia itemu w liście tak aby żaden nie był zaznaczony. Pytam bo koloruje wiersze w liście w zależności od obecności pewnego znaku w Item[Index]. W czasie wykonywania procedury rysującej to sprawdzam i koloruję odpowiednio. Jeśli potem kliknę w ten element i nie ma tego znaku..to koloruje mi prostokąt a napis znika.. dlatego dodałem tam warunek ze jak jest zaznaczony element to exit.

To jest procedura:


var
myColor: TColor;
myBrush: TBrush;
tmp:String;
begin
myBrush := TBrush.Create;
with (Control as TCheckListBox).Canvas do
begin
tmp:=(Control as TCheckListBox).Items[Index];
if (Control as TCheckListBox).Selected[Index] then exit else
begin
if Copy(tmp,length(tmp),1)='%' Then
begin
myColor:=$00DFDFFF;
Delete(tmp,length(tmp),1);
end
else myColor:=clWhite;

myBrush.Style := bsSolid;
myBrush.Color := myColor;
Windows.FillRect(handle, Rect, myBrush.Handle) ;
Brush.Style := bsClear;
TextOut(Rect.Left, Rect.Top,tmp) ;
end;
MyBrush.Free;

end;
end;


Może jakaś podpowiedź albo żeby nie znikało..albo właśnie jak wyłączyć możliwość selected.Wojtek Stępień edytował(a) ten post dnia 03.12.10 o godzinie 22:01

konto usunięte

Temat: Wyłączenie możliwości selected w CheckListBox

Może to pomoże:

http://www.delphipages.com/forum/showthread.php?t=103119

Chociaż osobiście polecałbym raczej poszukanie odpowiedniej kontrolki...

konto usunięte

Temat: Wyłączenie możliwości selected w CheckListBox

Ale to działa całkiem dobrze..funkcjonalnie też.. tylko czasem znika item :) (jesli został selected), chciałbym to jakoś zablokować.Wojtek Stępień edytował(a) ten post dnia 04.12.10 o godzinie 00:41
Piotr M.

Piotr M. programista

Temat: Wyłączenie możliwości selected w CheckListBox

var
tmp : string;
lCanvas : TCanvas;
begin
lCanvas := (Control as TCheckListBox).Canvas;
tmp := (Control as TCheckListBox).Items[Index];
if tmp[Length(tmp)] = '%' then
begin
lCanvas.Brush.Color := clYellow;
Delete(tmp, Length(tmp), 1);
end
else
lCanvas.Brush.Color := clWhite;
lCanvas.FillRect(Rect) ;
lCanvas.Font.Color := clBlack;
lCanvas.TextOut(Rect.Left, Rect.Top, tmp) ;
end;


Następnym razem nie wklejaj kodu z leakiem... ;>

konto usunięte

Temat: Wyłączenie możliwości selected w CheckListBox

hehe :)

Dziękuję bardzo.



Wyślij zaproszenie do