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

Вниз

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

 
dmk   (2003-02-11 21:54) [0]

Имеется окно. На ней расположен компонент
TListBox. При двойном щелчке на элементе списка управление и фокус должны передаваться другой форме. SetFocuseControl вроде
должна передать ей управление, но этого не происходит.
Ни SendMessage ни PostMessage для уведомления не подходят.
Как передать управление?


procedure TBrowserForm.FileListBoxDblClick(Sender: TObject);
var
FName: string;
y: Integer;
Index: Integer;

begin
ClearSFiles;

Index := 0;

for y := 0 to Self.FileListBox.Items.Count - 1 do
begin
If FileListBox.Selected[y] then
begin
HotFile := FileListBox.Items.Strings[y];
FName := HotFolder + HotFile;
Inc(sFiles.PlanesCount);
StringToArray(FName, @sFiles.Planes[Index].AssignedFileName);
Inc(Index);
end;
end;

If Index = 0 then
begin
InfoMessage("Select files first.");
exit;
end;

SendMessage(MAINFORM_HWND, FO_NEEDOPEN,0,0);
SendMessage(Handle, WM_KILLFOCUS, 0, 0);
end;


 
Романов Р.В.   (2003-02-11 22:19) [1]

FormX.Show;


 
dmk   (2003-02-11 22:35) [2]

Show не подходит. Так как форма уже видна. Да и управление передается обратно на форму, по которой был двойной щелчок.

Да! Забыл сказать, что управление должно передаться на Child
форму, а щелчок происходит на fsNormal.


 
Романов Р.В.   (2003-02-11 23:12) [3]


> Show не подходит. Так как форма уже видна

То что она видна не страшно. Выйдет на нередний план.
Use Show to set the form’s Visible property to True and to bring the form to the front of other forms on the screen

> Да! Забыл сказать, что управление должно передаться на Child

MainForm.Show; // Активизируем главную форму
ChForm.Show; // Активизируем Child форму


 
dmk   (2003-02-12 03:16) [4]

Этот способ не подходит. После щелчка все равно управление остается на TListBox.


 
Владислав   (2003-02-12 08:56) [5]

Это в форме, которая должна выйти на передний план:

procedure MoveOnTop (var Message: TMessage); message UM_Move_On_Top;
...
procedure TfrmBase.MoveOnTop(var Message: TMessage);
begin
Show;
BringToFront
end;

Это посылка сообщения форме, которая должна выйти на передний план:

SendMessage(FormDestroyNotifier.LastActiveForm.Handle, UM_Move_On_Top, 0, 0)


 
Ксюша   (2003-02-12 09:02) [6]

у каждого визуального компонента есть метод SetFocus, можешь попробовать )


 
Владислав   (2003-02-12 09:04) [7]

Да об этом наверное все знают ;)


 
ALex44   (2003-02-12 11:30) [8]

Po moemu, DblClick prohodit do MouseUp. Mozhet, v etom problema? Mozhet, pered Show nuzhno ListBox.Perform(WM_LBUTTONUP,...) i potom ReleaseCapture?


 
bn2   (2003-02-12 14:56) [9]

Знакомая проблема. Дело в том, что по дбл.клику фокус передаётся на ту форму, но оптом возвращается назад на тот компонент, по которому был дбл.клик. Нада на листвью мауз_ап обрабатывать, и притом второй


 
Владислав   (2003-02-12 15:06) [10]

> ALex44 (12.02.03 11:30)
> bn2 (12.02.03 14:56)
Теоретики, гадать не надоело? ;)


 
dmk   (2003-02-12 21:16) [11]

2Владислав © (12.02.03 08:56)
2Ксюша (12.02.03 09:02)
2Владислав © (12.02.03 15:06)
Уж поверьте я понимаю что такое SetFocus и т.п.

Я так уже делал. Не помогает.
А вот теоретики верно говорят.
Пришлось делать свою обработку двойного щелчка на OnMouseUp.
Так работает.
Спасибо за участие.


 
Diamond Cat   (2003-02-13 01:06) [12]

вобщето если почитать хелп про setfocusnj nfv yfgbcfyj
The SetFocus function sets the keyboard focus to the specified window. The window must be associated with the calling thread"s message queue. А если почитать еще внимательней то можно найти и такую функцию AttachThreadInput.
дальше проще


 
dmk   (2003-02-13 02:58) [13]

2 Diamond Cat © (13.02.03 01:06)

Все бы хорошо, но вот процесс у этих окон
один и тот же ID имеет. Так что не получится
вашим способом.


 
Владислав   (2003-02-13 11:32) [14]

Странно все это :)
Я тебе пример из рабочей программы выдернул.
А потом проверил эго и на двойном щелчке в листбоксе.



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

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

Наверх





Память: 0.47 MB
Время: 0.009 c
14-76120
KonstVD
2003-02-06 09:26
2003.02.24
Кто я?


14-76091
cdadmitriy
2003-02-09 17:05
2003.02.24
Virtual COM port


3-75784
stone
2003-02-05 16:31
2003.02.24
Вывод сообщений MSSQL


3-75751
denis24
2003-02-05 13:11
2003.02.24
выставление активного индекса


6-76062
DJ_Sedoy
2003-01-06 23:17
2003.02.24
Indy





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