Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

В TCheckListBox проставить галочки тыкая в названия   Найти похожие ветки 

 
korvin ©   (2004-12-15 15:48) [0]

TCheckListBox заполнен неким списком.
Чекет проставляется только если юзер попал мышей в квадратик для этой галочки, а на списке не реагирует. Как доработать сей недостаток?


 
ssk ©   (2004-12-15 16:05) [1]

procedure TForm1.CheckListBox1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 i: integer;
 P: TPoint;
begin
 P.X := X;
 P.Y := Y;
 i := CheckLIstBox1.ItemAtPos(P, True);
 CheckLIstBox1.Checked[i] := not CheckLIstBox1.Checked[i];
end;


 
ssk ©   (2004-12-15 16:09) [2]

так лучше:


procedure TForm1.CheckListBox1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 i: integer;
 P: TPoint;
begin
 P.X := X;
 P.Y := Y;
 i := CheckLIstBox1.ItemAtPos(P, False);
 if i < CheckLIstBox1.Items.Count then
   CheckLIstBox1.Checked[i] := not CheckLIstBox1.Checked[i];
end;


 
KSergey ©   (2004-12-15 16:52) [3]

> [2] ssk ©   (15.12.04 16:09)
> так лучше:

Не, не так
Заменить

if i < CheckLIstBox1.Items.Count then

на

if i >= 0 then

и будет хорошо ;)


 
KSergey ©   (2004-12-15 16:56) [4]

За это

> [3] KSergey ©   (15.12.04 16:52)

прошу прощения. Не вник. Код мой ошибочен.


 
KSergey ©   (2004-12-15 16:57) [5]

Ну и если совсем уж придираться, то

вместо

P.X := X;
P.Y := Y;
i := CheckLIstBox1.ItemAtPos(P, False);

можно написать одну строку

i := CheckLIstBox1.ItemAtPos(Point(X, Y), False);

и убрать объявление P, соответсвенно.


 
ssk ©   (2004-12-15 17:00) [6]

>KSergey ©
Ну и если совсем уж придираться


да, действительно. так даже лучше смотрится.


 
korvin ©   (2004-12-16 09:13) [7]

Всё бы хорошо, но данная процедура не даёт теперь по самому полю чекета нажимать ... точнее ставит галочку и вмиг снимает.


 
KSergey ©   (2004-12-16 09:47) [8]

Ну проверять еще и указанных X: если он больше определенншго числа - то это текст, иначе - не чекать, т.к. это и так область чекалок. Как определить - не знаю. Можно просто экспериментально, хотя это и по-детски, возможно.


 
ssk ©   (2004-12-16 10:46) [9]


 if x > 14 then
   begin
     i := CheckListBox1.ItemAtPos(Point(X, Y), False);
     if i < CheckListBox1.Items.Count then
       CheckListBox1.Checked[i] := not CheckListBox1.Checked[i];
   end;


 
Александр Иванов ©   (2004-12-16 10:57) [10]

Объявить переменную Checked:boolean

onFormCreate - Checked := false;

onCheckClick - Checked := true;

onMouseDown -

if not Checked then
begin
i := CheckListBox1.ItemAtPos(Point(X, Y), False);
if i < CheckListBox1.Items.Count then
CheckListBox1.Checked[i] := not CheckListBox1.Checked[i];
end
else
Checked := false;


 
korvin ©   (2004-12-16 17:16) [11]

> KSergey ©   (16.12.04 09:47) [8]
Применил детский вариант ;)

> ssk ©   (16.12.04 10:46) [9]
Истинно так и работает. Спасибо.

> Александр Иванов ©   (16.12.04 10:57) [10]
Всётаки вариант попроще мне больше понравился, но спасибо за беспокойство.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1103383258
Ivolg
2004-12-18 18:20
2005.01.02
Текст


14-1103124402
DiamondShark
2004-12-15 18:26
2005.01.02
А не забыли ли вы пингвинов?


6-1097932086
Drakon
2004-10-16 17:08
2005.01.02
Скрипты для форума


3-1102000126
yurikon
2004-12-02 18:08
2005.01.02
Запрос не хочет быть "живым"


9-1093153629
Ле:рч
2004-08-22 09:47
2005.01.02
Пожалуйста, оцените !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский