Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
8-1162976057
Kortes
2006-11-08 11:54
2007.12.23
Увеличение в Image


1-1191691397
Андрей_Св
2007-10-06 21:23
2007.12.23
разрезание StringGrid по листам


2-1196076386
новый новичок
2007-11-26 14:26
2007.12.23
Как защититься от совместного досупа к файлу в данном случае?


15-1195657545
Synset
2007-11-21 18:05
2007.12.23
Компоненты


2-1196148033
IntruderLab
2007-11-27 10:20
2007.12.23
TMemo перейти к последней записи