Главная страница
    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.044 c
15-1195570715
peregrooz
2007-11-20 17:58
2007.12.23
Производная


15-1196145164
still-let
2007-11-27 09:32
2007.12.23
Экспертные системы


2-1196315820
ryden
2007-11-29 08:57
2007.12.23
проблема с MDI приложением


5-1164376036
Priest
2006-11-24 16:47
2007.12.23
При размещении компонента на форме, занести его в коллекцию


1-1190371668
REA
2007-09-21 14:47
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский