Главная страница
    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.04 c
2-1196358779
Pacific
2007-11-29 20:52
2007.12.23
Потоки


6-1176402933
redlord
2007-04-12 22:35
2007.12.23
TIDHTTPserver в каком потоке выполняется IdHTTPServer1CommandGet


4-1181467494
lyberzon
2007-06-10 13:24
2007.12.23
Системные курсоры


2-1196152756
Ростик
2007-11-27 11:39
2007.12.23
Как правильно записывать числа типа флоат


6-1176222645
wolchonok29
2007-04-10 20:30
2007.12.23
Проблема с потоками





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