Главная страница
    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.071 c
14-1103067274
KilkennyCat
2004-12-15 02:34
2005.01.02
Сотовый телефон. Выбрать невозможно.


1-1103203996
socol
2004-12-16 16:33
2005.01.02
перевод в другой вид представления


1-1103310754
Жекер
2004-12-17 22:12
2005.01.02
Что за предупреждение?


4-1100857143
Antiloop
2004-11-19 12:39
2005.01.02
Мастера! есть сервис, который показывает форму, но дело в том,


1-1103323717
Вопрос
2004-12-18 01:48
2005.01.02
WorkSheets в EXCEL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский