Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Посоветуйте, как реализовать


Страницы:   1 2

Darvin ©   (2007-09-18 11:53:00) 

Здравствуйте!
В Ворде, в режиме предварительного просмотра есть кнопочка [Несколько страниц], позволяющая выбрать кол-во страниц по горизонтали и по вертикали. По нажатии выпадает окошко с гридом из страниц. Если НЕ БРОСАЕШЬ КНОПКУ МЫШКИ ПОСЛЕ НАЖАТИЯ НА КНОПКУ и двигаешь курсор по гриду, выделяются ячейки этого грида и меняется его размер. При отпускании кнопки мыши окошко прячется и запоминается количество ячеек (страниц) по горизонтали и вертикали.

Я хочу в своем проекте сделать такой-же диалог выбора. Для этого сделал форму с BorderStyle = bsNone, на нее поместил StringGrid. Далее на событии MouseDown кнопки показываю и позиционирую данное окно. Все работает, но возникает проблема. Грид на появившейся форме не получает события MouseMove и MouseUp до тех пор, пока принудительно не нажмешь кнопку мыши и соответственно не выделяются ячейки на гриде и не меняет он своего размера.
Вопрос:
Как сделать так, чтоб появившаяся форма и грид на ней СРАЗУ воспринимал события MouseMove и MouseUp, без предварительного нажатия на гриде в этой форме?


Галинка   (2007-09-18 12:42:00) [21]

У меня нет ворда. (( Тока опеноффис. Там эта фича тоже есть. И по виду там вроде тулбатон. Из которого выпадающее меню. И поведение вроде соответствующее.

ПыСы: может исходники опенофиса посмотреть?


Darvin   (2007-09-18 12:36:00) [22]

>Галинка ©   (18.09.07 12:33) [8]
procedure TfrmReporter.btnPageMultiMouseDown ( Sender : TObject;
                                              Button : TMouseButton;
                                              Shift  : TShiftState;
                                              X, Y   : Integer );
var
 P : TPoint;
begin
 FfmSetPagesArray.Show;
 P.X := 0;
 P.Y := 0;
 P := btnPageMulti.ClientToScreen(P);
 FfmSetPagesArray.Left := P.X;
 FfmSetPagesArray.Top := P.Y - FSelPageCount.Height;
 FfmSetPagesArray.SetFocus;  <- Добавлено по твоему совету ;-)
end;


Darvin   (2007-09-18 12:34:00) [23]

>Галинка ©   (18.09.07 12:31) [7]
Туллбуттон с выпадающим списком не подойдет. Посмотри, как это сделано в ворде. У меня просто SpeedButton, открывающий по MouseDown окно.


Галинка   (2007-09-18 12:33:00) [24]

Автор, а как вообще у тебя все работает? Как вызов самой формы происходит?


Галинка   (2007-09-18 12:31:00) [25]

homm ©   (18.09.07 12:27) [5]

на канве чего? Выпадающего списка? Там же я так понимаю ToolButton с выпадающим списком. Или?


Darvin   (2007-09-18 12:30:00) [26]

>homm ©   (18.09.07 12:27) [5]
Хорошо. А как фокус передать форме и отследить перермещение мыши? Рисование на канве проблему не решит


homm   (2007-09-18 12:27:00) [27]

> [4] Darvin ©   (18.09.07 12:25)
> А ты как предлагаешь?

На канве рисовать. StringGrid для отображения и редактирования СТРОК.


Darvin   (2007-09-18 12:25:00) [28]

>homm ©   (18.09.07 12:24) [3]
И страниц в ячейках. А ты как предлагаешь?


homm   (2007-09-18 12:24:00) [29]

> на нее поместил StringGrid

А зачем? Ради вертикальных и горизонтальных палочек?


Darvin   (2007-09-18 12:22:00) [30]

>Галинка ©   (18.09.07 12:18) [1]
Form1.SetFocus не работает


Галинка   (2007-09-18 12:18:00) [31]

фокус ей сразу передать. По появлению. Наверное в OnShow().


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо