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

Вниз

setfocus   Найти похожие ветки 

 
Quart   (2007-11-30 10:13) [0]

На форме есть dbgrid & checklistbox;
если перейти из dbgrida в checklistbox (т.е. щелкнуть мышью) , то выбрать итем чеклистбокса удается лишь только после второго нажатия.
Видимо, при первом нажатии чеклистбокс получает фокус, а потом уже можно выбирать итемы.
Пробовал:
procedure TForm1.CheckListBox1Enter(Sender: TObject);
begin
Form1.ActiveControl:=CheckListBox1;
end;

procedure TForm1.CheckListBox1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
checklistbox1.SetFocus
end;

и еще OnEnter - ничего не вышло. Подскажите, что делать?


 
ЮЮ ©   (2007-11-30 10:30) [1]

В новом проекте (D7) с одним dbgrid и одним checklistbox без всяких обработчиков всё работет без указанных тобою проблем.


 
Quart   (2007-11-30 10:44) [2]

У меня чеклистбокс заполняется динамически-каждый раз при выборе строчки дбгрида. Может по-этому не работает..


 
ЮЮ ©   (2007-11-30 10:59) [3]

> Может по-этому не работает..

Мой код не приводит к таким последствиям:

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
var
 i: integer;
begin
 CheckListBox1.Items.BeginUpdate;
 try
   CheckListBox1.Items.Clear;
   for i := 0 to DataSet.FieldCount - 1 do begin
     CheckListBox1.Items.Insert(
       CheckListBox1.Items.Count,
       DataSet.Fields[i].AsString
     );
   end;
 finally
   CheckListBox1.Items.EndUpdate;
 end;
end;


Показывай свой :)


 
Quart   (2007-11-30 11:27) [4]

у меня обрабатывается событие:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
a:string;
i:integer;
begin
OutRect:=Rect;
if (gdselected in state) then
begin
checklistbox1.Items.Clear;
query3.active:=false;
form2.Table2.Active:=true;
a:=query2mat.Value;
query3.ParamByName("p1").AsString:=a;
query3.Active:=true;
query3.First;
if query3.RecordCount<>0 then begin
query3.First;
for i:=0 to query3.recordcount-1 do begin
checklistbox1.Items.Add(query3.fieldbyname("nomer").AsString);
query3.Next;
end;
end;
end;
end;


 
clickmaker ©   (2007-11-30 17:57) [5]


> [4] Quart   (30.11.07 11:27)

зачем это все писать в DrawColumnCell? Эта процедура вообще ничем не должна заниматься, кроме рисования.
Обрабатывай DataSet.AfterScroll, если надо именно "заполняется динамически-каждый раз при выборе строчки дбгрида"



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

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

Наверх





Память: 0.45 MB
Время: 0.051 c
15-1195783594
Forest
2007-11-23 05:06
2007.12.23
Двухядерные процессоры работают под Виндос МЕ или 9х серии ?


15-1195580908
master_asasin
2007-11-20 20:48
2007.12.23
Конференция


15-1195904689
Petr V. Abramov
2007-11-24 14:44
2007.12.23
Болтовня по Skype


15-1195846286
Igor Zorkov
2007-11-23 22:31
2007.12.23
Anatoly Podgoretsky


2-1196255549
_Guest_
2007-11-28 16:12
2007.12.23
ValueListEditor добавление строк в String





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