|
Вопрос # 1 818/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
На этот раз меня интересует слудущее:
- У меня проект состоит из нескольких форм - можно ли сделать так, что бы перемещая одну форму проекта, перемещались все в след за ней?
- Можно ли сделать так, что бы, например, (используя кнопку PNGButton) при наведении на нее курсора - отдельной картинке присавивалась другая - ну, например - при наведении на PNGButton1 присваивалась другая картинка для Image1 - или что-то в этом роде?
Спасибо...
 |
Вопрос задала: Violina (статус: Посетитель)
Вопрос отправлен: 16 августа 2008, 15:17
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Аксион
Здравствуйте, Violina!
По поводу 1 вопроса, да такое воможно вот вам пример для синхронногоперемещения 2х форм, посмотрите, есле у вас больше форм то добавите просто тоже амое для них.
(Х1,Y1:integer вписываем в public)
Дальше, это пишем в свойство OnMouseDown для ГЛАВНОЙ формы (т.е. той которую вы будите перемещать):
X1 := X;
Y1 := Y;
Form1.BringToFront;
А это в OnMouseMove тоже для ГЛАВНОЙ формы:
if HiWord(GetAsyncKeyState(VK_LBUTTON)) > 0 then
begin
Form1.Left := Form1.Left + X - X1;
Form1.Top := Form1.Top + Y - Y1;
Form2.Left := Form2.Left + X - X1;
Form2.Top := Form2.Top + Y - Y1;
end;
Должно работать (у меня работает) есле что то пишите на мини-форуме, разберемся ;)
 |
Ответ отправил: Аксион (статус: 4-ый класс)
Время отправки: 16 августа 2008, 16:18
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Dron
Здравствуйте, Violina!
По второму вопросу. Почитал я мини-форум и понял, что у вас вся загвоздка в мерцании.
Чтобы избавиться от мерцания, нужно запретить постоянное обновление второй картинки. Если загружать вторую картинку по событию OnMouseMove, мерцание будет всегда, ведь при любом перемещении курсора (даже на один пиксель) "дёргается" это событие. Решение: использовать события "прихода" и "ухода" мыши. Такие события есть у большинства компонент. Например, у TImage они называются OnMouseEnter и OnMouseLeave. Пример:
procedure TForm1.Image1MouseEnter(Sender: TObject);
begin
Image2.Visible:=True
end;
procedure TForm1.Image1MouseLeave(Sender: TObject);
begin
Image2.Visible:=False
end;
Всё, никакого мерцания. При наведении курсора на Image1 станет видимой Image2, при убирании курсора вторая картинка пропадёт.
Аналогичные события есть у TLabel, TButton и т.д. Обнаружить их несложно - просто прочтите названия всех событий OnMouse*.
Удачи!
 |
Ответ отправил: Dron (статус: Студент)
Время отправки: 17 августа 2008, 15:04
Оценка за ответ: 5
Комментарий к оценке: Огромное спасибо!
|
Мини-форум вопроса
Всего сообщений: 67; последнее сообщение — 17 августа 2008, 23:32; участников в обсуждении: 4.
Страницы: [1] [2] [3] [4] [Следующая »]
|
Violina (статус: Посетитель), 16 августа 2008, 17:04 [#1]:
Большое спасибо - разобралась - но в моем случае лучше не перемещать формы, чем это все делать - на 70 форм это довольно утомительно - чего-то думала проще будет... но все равно спасибо! А по второму никаких предположэений нет?
|
|
Аксион (статус: 4-ый класс), 16 августа 2008, 17:57 [#2]:
Можно один вопрос? Что вы такое пишите что там 70 ФОРМ ! О_О
У меня максиум 15 было.........
|
|
Аксион (статус: 4-ый класс), 16 августа 2008, 17:58 [#3]:
Может лучше будит использоваь фраймы, а не формы?
|
|
Violina (статус: Посетитель), 16 августа 2008, 18:40 [#4]:
Ну не знаю - может и лучше было - но мне это тяжеловато - да так - прсото типа книга в электронном виде на 70 страниц - ну, тоесть на 1 форме делала 1 страницу с кнопками вперед страница и назад - можно это через фраймы сделать? Прсото я не знаю.. 8)
|
|
Аксион (статус: 4-ый класс), 16 августа 2008, 18:56 [#5]:
Violina через фраймы вам былобы НАМНОГО легче.... сделали бы 1 форму с кнопками и 70 фраймов , во перых размер проекта будит меньше, во вторых перемещаее форму, а так как фреймы на ней то они тоже перемещаются...
|
|
Violina (статус: Посетитель), 16 августа 2008, 20:14 [#6]:
Ага - хорошо - а тогда вопрос - можно сделать на форме 1 кнопку - что б, например, при нажатии на нее она следующий фрайм открывала, а предидущий убирала?
|
|
Аксион (статус: 4-ый класс), 16 августа 2008, 21:23 [#7]:
А предыдущий и убирать не надо просто новый поверх него откроется...главно рассположить их с 1 по 70 по порядочку...насчет кнопки...тут есть несколько вариантов..но мне надо знать как именно ваша книга листается? апример можноли с 1 страницы на 38 перескочить? или только по порядку листать 1,2,3...39 ?
|
|
Violina (статус: Посетитель), 16 августа 2008, 22:15 [#8]:
нет - только по порядку - 1, 2, 3 и т. д. так же само надо, что бы обратно листала - тоесть 70, 69, 68 и т. д.
|
|
Violina (статус: Посетитель), 16 августа 2008, 22:18 [#9]:
Забыла написать, что обратно листать - это другая кнорпка будет - и еще 1 кнопка будет - что бы на главную форму возвращала с любого фрэйма - это можно сделать?
|
|
Аксион (статус: 4-ый класс), 16 августа 2008, 23:03 [#10]:
Можно. Завтра напишу вам пример и дам вам.
|
|
Аксион (статус: 4-ый класс), 16 августа 2008, 23:05 [#11]:
Сейчас не могу Спать пора...
А вообще заходите на наш ирк канал завтра часов в 12-13...(я там почти всегда)
Как подключится тут: https://www.delphi-int.ru/irc/
Я там буду, там может всё и обьястню...
|
|
Аксион (статус: 4-ый класс), 16 августа 2008, 23:08 [#12]:
Да и забыл сказать канал в сети DalNet, а не в Русснет.
|
|
Violina (статус: Посетитель), 17 августа 2008, 09:17 [#13]:
Большое Спасибо - мне не к спеху - будет время, напишите, пожалуйста... https://www.delphi-int.ru/irc/ - сюда я зашла - скчала прогу - не знаю - может даже и подключилась... ну если что я тут напишу, что не так что-то! 8)
|
|
Violina (статус: Посетитель), 17 августа 2008, 12:33 [#15]:
Большое Спасибо! Скачала - теперь попробую разобраться - насколько я поняла - моя задача теперь только насоздавать фрэймов и количество в коде поменять - коды сами мне менять не надо - и добавлять тоже - только числа, правильно?
****
Так - попробовала - создала 4-й фрэйм -поместила на него компонент Image - в нем выбрала картинку - заменила 4 на 5 где количество фрэймов
(if fs<>5 then тут, for x:= 2 to 5 do - тут и еще раз тут for x:= 2 to 5 do)
- но не работает - что-то не так сделала - я вижу у Вас просто на фрэймах компоненты разбросаны - а они обображаются на форме - расскажите по подробнее об этом, пожалуйста...
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 12:42 [#16]:
да правильно
***********
Создаём сначало фрейм file-new-frame
Далее пихаем на него компоненты (любые)
Потом переходим на нашу главную форму
на вкладке стандарт выбираем 5 фрейм (хотя на самом деле он 4)
и размещаем на форме.
Насчет моих фреймов...вы просто сдвинте один и увидите что под ним ещё один.
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 12:44 [#17]:
Мои фреймы вы тоже можете отредактировать - убрать или изменить картинки и изминить текст, просто сдвигайте верхний чтобы увидить фрейм который под ним.
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 12:45 [#18]:
И замедте, когда вы помещаете фрейм на форму и компоненты перетаскиваете там, то на самом фрейме они какбы не перемещаются.
|
|
Violina (статус: Посетитель), 17 августа 2008, 12:58 [#19]:
Вот что-то не получается разметить его на форме... можно этот момент по подробнее - все остально я поняла вроде - ато у меня отдельный ObjectTreeView для 5-го фрэйма... я уверена, что так и должно быть - но как переместить его на форму - пока не понимаю... можно этот момент - надеюсь он последний 8) - поподробнее - спасибо!
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 13:06 [#20]:
Хммм....значит когда создали новый фрейм..пихайте все компоненты котоые будите использовать туда,потом размещаете фрейм на форме (на вкладке standart выбираем компонент frame ) и уже там расставляем компоненты.
|
Страницы: [1] [2] [3] [4] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|