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

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


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

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

Выпуск № 608
от 01.10.2006, 13:05

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


Вопрос № 56639: Добрый день! помогите разобраться с ошибкой! заранее благодарен...
Вопрос № 56691: Подскажите! У меня есть форма с размещенными на ней компонентами. Можно ли создать ее несколько раз (например три) чтобы она одновременно отбражалась на экране в трех экземплярах. Если да то пожалуйста приведите пример кода....
Вопрос № 56732: Доброго времени суток. Нужно получить признак наступления нового часа. Подскажите есть ли для этого стандартная функция или надо писать самому....
Вопрос № 56735: Здравствуйте! Подскажите пожалуйста какое событие необходимо обрабатывать чтобы при наведении указателем мыши на пункт меню в StatusBar отображался Hint этого пункта? Или варианты как это сделать? Delphi 7. Заранее спасибо....
Вопрос № 56738: Здравствуйте, уважаемые эксперты! Каждый из вас хоть раз сталкивался с программой ArtMoney. В связи с этим задаю свой вопрос: У меня есть ссылка на окно WND и шестнадцатеричный адрес переменной в процессе (достал из Артмани). Как отправить эт...

Вопрос № 56.639
Добрый день! помогите разобраться с ошибкой!
заранее благодарен

Приложение:

Отправлен: 25.09.2006, 13:01
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Werewolf
Здравствуйте, ERA!
-------------------------------
см. приложение.

Приложение:

Ответ отправил: Werewolf (статус: Студент)
Ответ отправлен: 25.09.2006, 13:12
Оценка за ответ: 5
Комментарий оценки:
спасибо

Отвечает: Gh0stik
Здравствуйте, ERA!

Я думаю у Вас была ошибка связанная с тем, что переменная s1:string;. А в case можно использовать только перечисляемые типы (для Вашего случая Char).

Вобщем смотрите код в приложении!!!

Удачи!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 25.09.2006, 13:18
Оценка за ответ: 5
Комментарий оценки:
спасибо

Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, ERA!

Я так понимаю ошибка у Вас возникает в операторе "case" - он не работает с переменными типа String,
поэтому используйте место String - Char а в своем коде замените s1 := copy(edit1.text,i,1) на s1 := edit1.text[i] и все должно заработать

---------
Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Ответ отправил: Кулаков Антон Сергеевич /SandroNec (статус: 1-ый класс)
Ответ отправлен: 25.09.2006, 13:31
Оценка за ответ: 5

Отвечает: Arvist
Здравствуйте, ERA!
Ошибка в том что вместо порядкового типа char вы исользуете строковый тип string
Существует несколько вариантов решения этой проблемы, предлагаю Вам самые простые

Приложение:

---------
В будущем определено одно - неопределенность будущего!

Ответ отправил: Arvist (статус: 2-ой класс)
Ответ отправлен: 25.09.2006, 17:15


Вопрос № 56.691
Подскажите! У меня есть форма с размещенными на ней компонентами. Можно ли создать ее несколько раз (например три) чтобы она одновременно отбражалась на экране в трех экземплярах. Если да то пожалуйста приведите пример кода.
Отправлен: 25.09.2006, 21:27
Вопрос задал: Daft82 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Н.В.
Здравствуйте, Daft82!
Можно создать в приложении три формы с нужными компонентами.
Чтобы при запуске программы показались все три формы, надо у главной формы создать обработчик события OnShow и в него записать код из приложения.

Но также, по-моему, должна быть возможность создать ещё двеформы динамически. Как - честно говоря, не знаю :( .

Удачи!

Приложение:

---------
http://TheDelphi.Ru

Ответ отправил: Н.В. (статус: 5-ый класс)
Ответ отправлен: 25.09.2006, 21:37

Отвечает: Mo-skin
Здравствуйте, Daft82!
Очень даже можно!
Допустим, есть форма Form1,
тогда обьявляем переменную
Form2:TForm1 и Далее
например по нажатию кнопки выполняем:
Form2:=TForm1.Create(self);
Form2.Show;
кусок кода в приложении.

Приложение:

---------
Чем больше женщину мы меньше, тем больше меньше мы ее!

Ответ отправил: Mo-skin (статус: 2-ой класс)
Ответ отправлен: 25.09.2006, 22:40
Оценка за ответ: 5

Отвечает: Кулаков Антон Сергеевич /SandroNec
Здраствуйте Daf82

Нет проблем с вашим вопросом. Допустим вы создали новый проект, у вас в нем есть описание класса TForm1, и есть переменная Form1, делаем следующее:
Application.CreateForm(TForm1, Form1);
Form1.visible := true;

В данном примере проблема в следующем надо сразу в заголовках указать какая форма главная потому что если ее закрыть то и приложение закроется, в качестве выхода из этого положения надо использовать в качестве донара не главную форму приложения а создать еще одну - например TForm2

Есть такой вариант: Главная форма является родительской т.е. FormStyle ее равен - fsMDIForm, а форма донор дочерняя - fsMDIChild;
тогда в меню Project - Options убираем дочернюю форму из "Auto-create forms" в "Available Forms", допустим дочерняя форма у нас называется form2, ее класс - tform2 соответственно, тогда в обработчике нажатия кнопки пишем следующее:
Form2 := TForm2.Create(Application);

Вот пожалуй и все, но это только в общих чертах, напишите точнее зачем вам надо дублировать формы, тогда и разбиремся.

Приложение:

---------
Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как

Ответ отправил: Кулаков Антон Сергеевич /SandroNec (статус: 1-ый класс)
Ответ отправлен: 26.09.2006, 06:23
Оценка за ответ: 5


Вопрос № 56.732
Доброго времени суток. Нужно получить признак наступления нового часа. Подскажите есть ли для этого стандартная функция или надо писать самому.
Отправлен: 26.09.2006, 09:47
Вопрос задал: VNos (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, VNos!

Самый простой способ решить эту проблему - объявить глобальную переменную типа Word например MyHour, далее в разделе Uses подключаем модуль DateUtils
в процедуре на создание главной формы пишем следующее:
MyHour := Hourof(Time);

потом в таймере пишем следующий код:
if myhour <> Hourof(time) then begin
MyHour := HourOf(Time);
Showmessage('Наступил новый час');
end;

Вот пожалуй и все
---------
Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Ответ отправил: Кулаков Антон Сергеевич /SandroNec (статус: 1-ый класс)
Ответ отправлен: 26.09.2006, 10:00
Оценка за ответ: 4


Вопрос № 56.735
Здравствуйте! Подскажите пожалуйста какое событие необходимо обрабатывать чтобы при наведении указателем мыши на пункт меню в StatusBar отображался Hint этого пункта? Или варианты как это сделать? Delphi 7. Заранее спасибо.
Отправлен: 26.09.2006, 10:31
Вопрос задал: Savnick (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Gh0stik
Здравствуйте, Savnick!

Сделайте такой обработчик в FormCreate() и добавьте такие строки:

StatusBar1.Hint:='Message...';
StatusBar1.ShowHint:=True;


Либо можно эти свойства найти в Object Inspector компонента StatusBar.

Удачи!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 26.09.2006, 10:38
Оценка за ответ: 3
Комментарий оценки:
Как выводить хинты на StatusBar я знаю. А вот как сделать это при наведении указателя мыши на какой-либо пункт меню? Читайте внимательнее вопрос....

Отвечает: Rusland
Здравствуйте, Savnick!
У StatusBar есть свойство AutoHint. Поставьте значение True и Hint-ы всех компонентов будут отображаться в StatusBare.
---------
Если партия скажет есть контакт, будем есть контакт.
Ответ отправил: Rusland (статус: Специалист)
Ответ отправлен: 26.09.2006, 13:13
Оценка за ответ: 5

Отвечает: Melamed
Здравствуйте, Savnick!
У соответственного пункта меню или другого органа управления свойству
Hint присваивается соотствующение сообщение, которое надо выводить, а свойство ShowHint признак вывода подсказки, или нет

Для того, чтобы подсказка выводилась в строке состояния Вам следует допольнительно запрограммировать событие OnHint экземпляра приложения Application (см приложение)

Если данная форма не главнвя, то по ее удалении надо востановить старый обрабодчик этого события. Иначе у Вас будут проблемы.

Приложение:

Ответ отправил: Melamed (статус: 5-ый класс)
Ответ отправлен: 26.09.2006, 13:54

Отвечает: 3лоумышленник
Здравствуйте, Savnick!
Здравствуйте, VNos!
В минифоруме вы написали "Ответ нашел самостоятельно. спасибо всем побеспокоившимся. Кому интересно, читать тут http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1208
пункт 8.3.2 ". Мне стало интересно, я глянул, но там написал человек, не знающий про с-во СтатусБара "AutoHint". В дополнение ответа Rusland'а скажу, что если поставить это с-во в true, то никаких "собыий" писать не нужно. Причём будут отображаться хинты не только менюшек, но и любых других элементов управления, и даже с других форм. К тому же если написать хинт вида "Краткая подсказка|Развёрнутая подробная подсказка", то в StatusBar'е отобразится "Развёрнутая подробная подсказка", а всплывающая подсказка будет содержать "Краткая подсказка". Удачи.
---------
"Люди неизбежно умирают", A. Schwarzenegger (Terminator 3: Rise of the Machines)
Ответ отправил: 3лоумышленник (статус: Студент)
Ответ отправлен: 27.09.2006, 21:56


Вопрос № 56.738
Здравствуйте, уважаемые эксперты!
Каждый из вас хоть раз сталкивался с программой ArtMoney. В связи с этим задаю свой вопрос:
У меня есть ссылка на окно WND и шестнадцатеричный адрес переменной в процессе (достал из Артмани). Как отправить это значение в Дельфи, без использования Артмани.
Спасибо!
Отправлен: 26.09.2006, 10:48
Вопрос задал: KlyuchnikOFF (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: n0name
Здравствуйте, KlyuchnikOFF!
var
pid: DWORD;
hProcess: THandle;
bw: DWORD;
begin
GetWindowThreadProcessId(Wnd, pid);
hProcess := OpenProcess(PROCESS_VM_WRITE, false, pid);
WriteProcessMemory(hProcess, Addr, @Value, 4, bw);
CloseHandle(hProcess);
end;

где Wnd - хендл окна, Addr - адрес переменной в памяти, Value - на какое значение будете менять.
Ответ отправил: n0name (статус: 6-ой класс)
Ответ отправлен: 26.09.2006, 14:33


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное