Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 240
от 16.09.2005, 22:24

Администратор:Калашников О.А.
В рассылке:Подписчиков: 242, Экспертов: 50
В номере:Вопросов: 5, Ответов: 25


Вопрос № 26161: Здравствуйте, уважаемые эксперты. У меня в процедуре Form1.button1.click открывается Form2. Как сделать так, чтобы Form2 оставалась на переднем плане и продолжалось выполнение процедуры? Спасибо. ...
Вопрос № 26162: Добрый день, уважаемые эксперты. У меня на Form1 расположен рисунок Image1. Во время выполнения программы создаются новые объекты типа TShape, но при появлении они появляются на переднем плане. Можно ли сделать так, чтобы новые объкты сразу наход...
Вопрос № 26167: Помогите пожалуйста... Я создаю в RunTime несколько компонентов (TImage), как мне обрабатывать события типа OnClick, OnMouseMove и.т.д от каждого компонента отдельно, и как передвигать каждый компонент Если можно покажите на примере Я...
Вопрос № 26170: Здравствуйте эксперты. Среда программирования у меня Delphi 8 При объявлении любого типа данных командой : file of ... компилятор выдает ошибку Unsupported language feature: 'typed or untyped file' Я так понял в Delphi 8 не под...
Вопрос № 26173: Здравствуйте уважаемые эксперты. Вопрос немного нестандартный. Среди вас хоть кто нибудь использует Delphi 8 ?...

Вопрос № 26.161
Здравствуйте, уважаемые эксперты.
У меня в процедуре Form1.button1.click открывается Form2. Как сделать так, чтобы Form2 оставалась на переднем плане и продолжалось выполнение процедуры?
Спасибо.
Отправлен: 11.09.2005, 14:29
Вопрос задал: Граур Василий Олегович (статус: 1-ый класс)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Граур Василий Олегович!
Если у Вас после открытия Form2 будут еще какие-то процедуры или функции в Click(), то выполнение спокойным образом продолжится, а Form2 так и останется на переднем плане.
Видимо Вы что-то другое имели в виду. Пожалуйста, напишите более подробно. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 12.09.2005, 06:45

Отвечает: Romodos
Здравствуйте, Граур Василий Олегович!
Передача фокуса производится процедурой SetFocus
Просто Form2.SetFocus. например

---------
FAQ me off!
Ответ отправил: Romodos (статус: 6-ой класс)
Отправлен: 12.09.2005, 07:22

Отвечает: Ерёмин Андрей
Здравствуйте, Граур Василий Олегович!
Вероятно, Вы используете ShowModal. Используйте просто Show, а в Form2.OnShow() активируйте Form1 через Form1.SetFocus или Form1.Activate.
---------
Мышка побежала, xвостиком махнула - cервер упал...
Ответ отправил: Ерёмин Андрей (статус: Практикант)
Отправлен: 12.09.2005, 09:04

Отвечает: akaDemik
Здравствуйте, Граур Василий Олегович!
Если хотите что бы form2 осталась поверх можете установить
Form2.FormStyle := fsStayOnTop;
и она будет поверх... правда поверх всех окон :) а не только над form1.
А потом по необходимости вернуть все как было:
Form1.FormStyle := fsNormal;
Ответ отправил: akaDemik (статус: 1-ый класс)
Отправлен: 12.09.2005, 09:46
Оценка за ответ: 3

Отвечает: Lector
Здравствуйте, Граур Василий Олегович!
Если вы не будете выводить на передний план первую форму, не будете скрывать вторую форму, вотрая форма не выводится в модальном режиме - то всё должно будет работать.

Приложение:

---------
Хочешь помочь дураку - сам дурак

Ответ отправил: Lector (статус: 3-ий класс)
Отправлен: 12.09.2005, 13:02

Отвечает: Delphin
Здравствуйте, Граур Василий Олегович!
Можно после открытия формы 2 сразу открывать 1 :-) Или процедурой Show или SetForegroundWindows();Здравствуйте, Граур Василий Олегович!

---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 10-ый класс)
Отправлен: 12.09.2005, 15:36

Отвечает: Werewolf
Здравствуйте, Граур Василий Олегович!
Используйте потоки с синронизацией в которой будут вызываться методы увеличения прогресса например, и Application.ProcessMessages для отрисовки верхнего окна
Ответ отправил: Werewolf (статус: 9-ый класс)
Отправлен: 13.09.2005, 01:06


Вопрос № 26.162
Добрый день, уважаемые эксперты.
У меня на Form1 расположен рисунок Image1. Во время выполнения программы создаются новые объекты типа TShape, но при появлении они появляются на переднем плане. Можно ли сделать так, чтобы новые объкты сразу находились за Image1 (без использования image1.bringtofront)?
Спасибо.
Отправлен: 11.09.2005, 14:29
Вопрос задал: Граур Василий Олегович (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Граур Василий Олегович!
Вам нужно в процедуре Create указать хозяина этого объекта:
TShape.Create(Image1);
тогде все шейпы будут находится на Image1.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 12.09.2005, 06:47

Отвечает: Маренич Владимир
Здравствуйте, Граур Василий Олегович!
Вы почти сами ответили на свой вопрос. Есть процедура, обратная BringToFront: SendToBack. Вот и применяйте ее к Shape:
var
P: TShape;
begin
P:=TShape.Create(Self);
P.Parent:=Self;
P.SendToBack;
//.....
end;

Последний созданный объект TShape будет в "самом низу".
Ответ отправил: Маренич Владимир (статус: 2-ой класс)
Отправлен: 12.09.2005, 13:29
Оценка за ответ: 4

Отвечает: Delphin
Здравствуйте, Граур Василий Олегович!
Собственно эта функция для этого и создана.
А чем плохо делать так?
Вывод: Никак.
---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 10-ый класс)
Отправлен: 12.09.2005, 15:37


Вопрос № 26.167
Помогите пожалуйста...
Я создаю в RunTime несколько компонентов (TImage), как мне обрабатывать события типа OnClick,
OnMouseMove и.т.д от каждого компонента отдельно, и как передвигать каждый компонент
Если можно покажите на примере
Я создаю так...(см. приложение)

Приложение:

Отправлен: 11.09.2005, 17:36
Вопрос задал: Dadaev Zaur (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Dadaev Zaur!
Если Вам нужно, чтобы у каждого создаваемого компонента была своя процедура, то и присваивайте им РАЗНЫЕ процедуры, а не одну и ту же, как у Вас в приложении.
Непонятно, что Вас озадачило здесь, напишите подробнее.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 12.09.2005, 06:51

Отвечает: Romodos
Здравствуйте, Dadaev Zaur!
Используйте массив компонентов, см приложение
И обращайтесь к компонентам по индексу

Приложение:

---------
FAQ me off!

Ответ отправил: Romodos (статус: 6-ой класс)
Отправлен: 12.09.2005, 07:22
Оценка за ответ: 4
Комментарий оценки:
Спасибо... это решило много проблем....

Отвечает: Rusland
Здравствуйте, Dadaev Zaur!
Обработчик можно поставить всем компонентам один, только каждому компоненту в Tag нужно прописать свой индекс и в обработчике проверять какое значение в Tag. Удачи.
---------
Тише едешь, дальше будешь... от того места куда едешь
Ответ отправил: Rusland (статус: Студент)
Отправлен: 12.09.2005, 11:16

Отвечает: Lector
Здравствуйте, Dadaev Zaur!
1.Создайте процедуру типа TNotifyEvent.
2.Присвойте свойства OnClick, OnMouseMove и т.д. равными этой процедуре. Тогда при срабатывании этих событий будет вызываться ваша процедура.
---------
Хочешь помочь дураку - сам дурак
Ответ отправил: Lector (статус: 3-ий класс)
Отправлен: 12.09.2005, 13:10
Оценка за ответ: 3
Комментарий оценки:
спасибо - это выход от части!

Отвечает: Маренич Владимир
Здравствуйте, Dadaev Zaur!
Во-первых сразу пару замечание: если Вы создаете TImage, то зачем пишете TComponent.Create??? Исправте на TImage :). Если при создании компонента указать компонент-владелец, то при уничтожении владельца будет уничтожены и все его подчиненные компоненты. А если Вы указываете в Create NIL, то уничтожать такой компонент придется вручную: myComponent.Free.

Теперь собственно по теме:
Не совсем понятно, что Вы хотите. Если Вам нужно для каждого TImage разное действие, то придется создать столько обработчиков OnClick и OnMouseMove, сколько у Вас TImage и каждому экземпляру присваивать свои обработчики. Здесь цикл не поможет...
Если TImage реагирую на соотв. события одинаково, то в обработчиков OnClick и OnMouseMove может быть по одному и всем TImage присвоить одинаковые указатели на эти процедуры (как в Вашем примере).
OnClick и OnMouseClick в параметрах передают Sender: TObject того объекта в котором возникло данное событие. Вам нужно только сделать приведение типов и обрабатывать соотв. TImage

Приложение:

Ответ отправил: Маренич Владимир (статус: 2-ой класс)
Отправлен: 12.09.2005, 13:44

Отвечает: Delphin
Здравствуйте, Dadaev Zaur!
Ивенты обрабатывай как ты показал но потом различай компоненты по имени или по Tag'y.
Смотри приложение.
А передвигать используя свойства Left и Top.

Приложение:

---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com

Ответ отправил: Delphin (статус: 10-ый класс)
Отправлен: 12.09.2005, 15:42


Вопрос № 26.170
Здравствуйте эксперты.
Среда программирования у меня Delphi 8
При объявлении любого типа данных командой :
file of ...
компилятор выдает ошибку Unsupported language feature: 'typed or untyped file'
Я так понял в Delphi 8 не поддерживается ('Unsupported') эта команда.
Поясните пожалуйста.
Отправлен: 11.09.2005, 19:47
Вопрос задал: Teapot (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, Teapot!
Может быть и не поддерживается, т.к. Delphi 8 работает исключительно с объектами .NET.
Вернитесь на Delphi 7 или переходите на Delphi 2005, в них все в порядке с поддержкой файловых типов Паскаля.
К сожалению проверить то, что Вы пишите я не могу, т.к. отсутствует под рукой Delphi 8, но судя по одному из вопросов присланых ранее, вроде бы в восьмерке это работало (по крайней мере для текстовых файлов).
Может быть Вы что-то забыли прописать в USES?
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 12.09.2005, 06:56

Отвечает: Petya-kurochkin
А может ты его установила не так?
Ты вообще знаешь как определять и всё такое, просто дай код всей программы, попробую разобраться.
А вообще 8 - ой Delphi,( Это моё сугубо публичное мнение) достаточно глючный, но он у меня есть, а так же дай код, ппожалуйста я тогда посмотрю, что там у тебя.
Кстати, если ты хочешь сделать текстовый файл то лучше напиши:
F: text(Помоему так)

---------
Всех порву! Всех побью! Но если можно убегу!
Ответ отправил: Petya-kurochkin (статус: 1-ый класс)
Отправлен: 12.09.2005, 15:42

Отвечает: Delphin
Здравствуйте, Teapot!
Ну ты хотябы кусок файла дал! Кому ты это назначаеш? Что назначаеш? Зачем?
Темболле не забывай что это не Delphi программа будет а .Net программа.
Поэтому все вопросы логично бы задавать в рассылку по .Net.
Хотя все таки может тебе надо писать AssignFile( f, 'file name' );
Хотя я че то не понял.
Меня прикольнуло:
file of... это че такое?


---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 10-ый класс)
Отправлен: 12.09.2005, 15:44


Вопрос № 26.173
Здравствуйте уважаемые эксперты.
Вопрос немного нестандартный.
Среди вас хоть кто нибудь использует Delphi 8 ?
Отправлен: 11.09.2005, 20:48
Вопрос задал: Teapot (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Denis Hakimov
Здравствуйте, Teapot!
Если под Delphi 8 подразумевается Delphi 2005, то да. Хотя до сих пор программы пишу в Delphi7 (там компонентов больше :), да и просто привык уже к ней).
Ответ отправил: Denis Hakimov (статус: 2-ой класс)
Отправлен: 12.09.2005, 02:43

Отвечает: sir henry
Здравствуйте, Teapot!
Боюсь, что никто. Восьмерка - выродок в славном семействе Дельфи. :)
Более разумно использовать Дельфи 2005, т.к. там можно компилить проги как для .NET, так и для Win32.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 12.09.2005, 06:58
Оценка за ответ: 5
Комментарий оценки:
Наконец - то я услышал то о чем давно подозревал (вот уже1,5 с тех пор как я увлекся Delphi)!!!
Всё! Cегодня же иду в прокат за Delphi 2005!

Отвечает: Romodos
Здравствуйте, Teapot!
Нет, я лично использую Delphi 7 и мне хватает. Хотя .NET сейчас очень быстро развивается, ещё не настало время программать под неё.
---------
FAQ me off!
Ответ отправил: Romodos (статус: 6-ой класс)
Отправлен: 12.09.2005, 07:05

Отвечает: Ерёмин Андрей
Здравствуйте, Teapot!
Я - нет. :) Там очень много всего переделали, в синтаксисах языка много изменений. Пока что не пользуюсь средой, т.к. она ещё не очень распространена и компонент под неё практически нет.
---------
Мышка побежала, xвостиком махнула - cервер упал...
Ответ отправил: Ерёмин Андрей (статус: Практикант)
Отправлен: 12.09.2005, 08:44

Отвечает: Petya-kurochkin
Здравствуйте, Teapot!
Ну, я раньше использовал(По дурости своей), а потом попросил у нашей информатички(Я в 9 - ом классе) переписать мне Delphi 7.
Клёвая вещь!
А вообще Sir Henry, абсолютно прав!
Да и кто му же GLScene нет под 8 - ой делфи.

---------
Всех порву! Всех побью! Но если можно убегу!
Ответ отправил: Petya-kurochkin (статус: 1-ый класс)
Отправлен: 12.09.2005, 15:45

Отвечает: Anefedov
Здравствуйте, Teapot!
По аналогии прогресса от 4.0. к 7.0. принципиально ничего нового, просто нововведения.
Я не использую.
Ответ отправил: Anefedov (статус: 5-ый класс)
Отправлен: 12.09.2005, 16:37


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное