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

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


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

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

Выпуск № 728
от 05.02.2007, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 440, Экспертов: 83
В номере:Вопросов: 7, Ответов: 18


Вопрос № 73336: Здраствуйте, уважаемые эксперты! Наверно вопрос у меня очень протой но все же! У меня на форме стоит TEdit. По закрытию формы его тест сохраняется в файл. Как сделать что бы по запуску программы из файла в него загружался последний сохраненный т...
Вопрос № 73386: Добрый день!!! Может покажется глуппый вопрос, но увы. Как можно узнать дату на три дня вперед текущей даты. например сегодня 31.01.2007 и на три дня вперед 3.02.2007г. заранее всем спасибо....
Вопрос № 73411: Добрый День, ув. эксперты. У меня вопрос, связан с аппаратурным контролем компьютера из-под Дельфи: Как программно можно отключить питание винчестера, при этом так, что бы Маздай(Windows :)) оставался работать. Тоесть, питание винчестера выключено, н...
Вопрос № 73456: Здравствуйте уважаемые эксперты. У меня вопрос. Как сделать следующее. Нужно, чтобы при первом запуске выскакивало обычное окно с вопросом о вводе пароля и кнопками OK и Oтмена. То есть если п ользователь введёт его один раз, то больше при следующем з...
Вопрос № 73457: Здравствуйте уважаемые эксперты. У меня вопрос. Как сделать так, чтобы при вводе в поле Edit1 формы №1 и при нажатии на кнопку Button1, открывалась форма №2 и этот же текст переносился в поле Edit1 на форме №2...
Вопрос № 73522: Здравствуйте уважаемые эксперты! Из главной формы открываю модальную форму, в событии OnActivate она выполняет определенные действия и после этого должна самостоятельно закрыться. Как это сделать? процедура Close не работает, приходится закрывать вру...
Вопрос № 73524: Здраствуйте Уважаемые эксперты, Помогите пожалуйста разобратся с одной проблемой: Как можно зделать чтобы при нажатии на кнопку выхода на форме, (этот крестик в правом верхнем углу) Форма не закрывалась бы а сворачивалась, похоже как в ICQ и ...

Вопрос № 73.336
Здраствуйте, уважаемые эксперты! Наверно вопрос у меня очень протой но все же!
У меня на форме стоит TEdit. По закрытию формы его тест сохраняется в файл. Как сделать что бы по запуску программы из файла в него загружался последний сохраненный текст! Как такое сделать в TMemo я знаю! Заранее благодарен!
Отправлен: 30.01.2007, 21:17
Вопрос задал: Павлов Сергей Сергеевич (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, Павлов Сергей Сергеевич!

Советую Вам сохранять значение поля TEdit в ini-файл. (дешево и сердито..).

Более подробно по использованию данного ресурса Вы можете ознакомиться по таким ссылкам:
* TIniFile
* Как хранить настройки для программы. Работа с INI-файлами
* Работа с INI файлами
* Работа с INI-файлами 2
* Сохранять настройки в ini-файле

А основной пример смотрите в приложении....

Good Luck!!!

Приложение:

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

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 31.01.2007, 00:19

Отвечает: Трогладит
Здравствуйте, Павлов Сергей Сергеевич
Самый простой способ по событию завершение программы или закрытию окна,
надо помещать текст либо в реестр (TRegistry), либо в файл ini (TFileIni),
а потом по Криейту считывать и записывать в компонент.
В Хелпе есть примеры.
Ответ отправил: Трогладит (статус: 1-ый класс)
Ответ отправлен: 31.01.2007, 06:10

Отвечает: Argyn.Durmagambetov
Здравствуйте, Павлов Сергей Сергеевич!

согласен с ответом про инифайлы
но можно и так (код в приложении)
и думаю еще с пару-тройку способов вам подскажут
(есть много способов петь песни и все они правильные)

Приложение:

---------
Не говори мне СДЕЛАЙ и я не скажу куда тебе идти...спроси "Как сделать" и получишь ответ

Ответ отправил: Argyn.Durmagambetov (статус: 2-ой класс)
Ответ отправлен: 31.01.2007, 06:25

Отвечает: Troyan
Здравствуйте, Павлов Сергей Сергеевич!
Для работы с файлами обрабатываете OnCreat у формы и вставляете туда код из приложения.

Приложение:

---------
Кто к нам с чем за чем от того и того!

Ответ отправил: Troyan (статус: 6-ой класс)
Ответ отправлен: 31.01.2007, 13:28
Оценка за ответ: 5


Вопрос № 73.386
Добрый день!!! Может покажется глуппый вопрос, но увы. Как можно узнать дату на три дня вперед текущей даты. например сегодня 31.01.2007 и на три дня вперед 3.02.2007г. заранее всем спасибо.
Отправлен: 31.01.2007, 06:26
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

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

now+3 - это и будет нужная дата
Ответ отправил: Синельников Сергей (статус: 2-ой класс)
Ответ отправлен: 31.01.2007, 06:49
Оценка за ответ: 5
Комментарий оценки:
Спасибо

Отвечает: Argyn.Durmagambetov
Здравствуйте, ERA!
вопрос отнюдь не глупый
вам поможет функция IncDay из модуля DateUtils

в приложении текст из справки

Приложение:

---------
Не говори мне СДЕЛАЙ и я не скажу куда тебе идти...спроси "Как сделать" и получишь ответ

Ответ отправил: Argyn.Durmagambetov (статус: 2-ой класс)
Ответ отправлен: 31.01.2007, 06:53
Оценка за ответ: 5
Комментарий оценки:
спасибо

Отвечает: Базанов Иван Александрович
Здравствуйте, ERA!
//Now - стандартная функция, возвращающая текущую дату...
dt3 := IncDay(Now,3); // Только надо подключить: uses DateUtils
или проще
dt3 := Now + 3;
---------
Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 3-ий класс)
Ответ отправлен: 31.01.2007, 09:13
Оценка за ответ: 5


Вопрос № 73.411
Добрый День, ув. эксперты. У меня вопрос, связан с аппаратурным контролем компьютера из-под Дельфи: Как программно можно отключить питание винчестера, при этом так, что бы Маздай(Windows :)) оставался работать. Тоесть, питание винчестера выключено, но мы все еще работаем в Виндовсе?
Отправлен: 31.01.2007, 09:04
Вопрос задал: Whatever (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Трогладит
Здравствуйте, Whatever
Сдается мне, что Винда не допустит отключение винта на котором сидит.
Ответ отправил: Трогладит (статус: 1-ый класс)
Ответ отправлен: 31.01.2007, 14:34
Оценка за ответ: 1
Комментарий оценки:
Как сказать, она всё-таки отключает винт, когда переходит в "Ждущий режим", но продолжает работать!
+ энергосбережение - тот же эфект. :)


Вопрос № 73.456
Здравствуйте уважаемые эксперты. У меня вопрос. Как сделать следующее. Нужно, чтобы при первом запуске выскакивало обычное окно с вопросом о вводе пароля и кнопками OK и Oтмена. То есть если пользователь введёт его один раз, то больше при следующем запуске пароль спрашиваться не будет.
Отправлен: 31.01.2007, 14:14
Вопрос задал: SashaFAN (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Трогладит
Здравствуйте, SashaFAN!
В Событие ОнКриейт описываете выброс окна Диалога с условием запрашиваемым в реестре, после введения правильного пароля в первый раз, делать запись в реестре, которая запретит запрос пароля
Ответ отправил: Трогладит (статус: 1-ый класс)
Ответ отправлен: 31.01.2007, 14:36

Отвечает: Troyan
Здравствуйте, SashaFAN!
Если вы собираетесь хранить данные (пароль и пользователь) в файле, то проверяете наличие файла (If FileExists(FileName : String) then) и обрабатываете его, если он есть, а если его нет, то модально выскакивает вторая форма с нужными вам элемементами (Form2.ShowModal). Если вы работаете с реестром, то проверяете наличие данных в реестре
Всю эту обработку нужно обеспечить в FormCreate.
---------
Кто к нам с чем за чем от того и того!
Ответ отправил: Troyan (статус: 6-ой класс)
Ответ отправлен: 31.01.2007, 14:38

Отвечает: Coupler
Здравствуйте, SashaFAN!
Нужно хранить где-то пометку о том, что пароль введен. Но это глубоко неправильно, т.к. это легко найти в большинстве случаев, поэтому нужно хранить сам пароль, а еще лучше, его хэш, и именно хэш проверять при запуске. Пример с функциями шифрования MD5 в приложении (пароль 123). Модуль с функциями шифрования MD5 (здесь не поместился) можно взять в delphiworld: http://delphiworld.narod.ru/base/hash_md5.html, только там надо синтаксические ошибки исправить, если не сможете, пишите.

Приложение:

Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 31.01.2007, 15:10


Вопрос № 73.457
Здравствуйте уважаемые эксперты. У меня вопрос. Как сделать так, чтобы при вводе в поле Edit1 формы №1 и при нажатии на кнопку Button1, открывалась форма №2 и этот же текст переносился в поле Edit1 на форме №2
Отправлен: 31.01.2007, 14:14
Вопрос задал: SashaFAN (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Базанов Иван Александрович
Здравствуйте, SashaFAN!
Предположим что формы называются Form1 и Form2
Пишем такой обработчик нажатия Button1, которая лежит на форме Form1:
procedure Form1.Button1Click(Sender:TObject);
begin
Form2.Edit1.Text := Edit1.Text;
Form2.Show; // Как вариант - Form2.ShowModal
end;

---------
Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 3-ий класс)
Ответ отправлен: 31.01.2007, 14:49


Вопрос № 73.522
Здравствуйте уважаемые эксперты! Из главной формы открываю модальную форму, в событии OnActivate она выполняет определенные действия и после этого должна самостоятельно закрыться. Как это сделать? процедура Close не работает, приходится закрывать вручную.
Отправлен: 31.01.2007, 19:58
Вопрос задал: Зиганшин Рустем (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Зиганшин Рустем!

Просто Close пишите не в событии OnActivate, а в событии OnPaint.
Также (как вариант) на форме можно установить таймер, который будет закрывать форму, а сам таймер активировать в OnActivate, но первый способ, несомненно, лучше.

Удачи!
---------
Ждешь квалифицированного ответа? Задай правильно вопрос!
Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 31.01.2007, 20:13
Оценка за ответ: 5
Комментарий оценки:
Спасибо, воспользовался советом с таймером! OnPaint не работает видимо ввиду длительности работы процедуры(за это время форма должна нарисоваться).

Отвечает: Базанов Иван Александрович
Здравствуйте, Зиганшин Рустем!
Закрывать диалоговое окно лучше не
Close;
а так:
ModalResult:=mrCancel;
Скорее всего, если бы оно у вас закрывалось, то вы вообще ничего бы не увидели, :) для окна бы сначала вызвалось бы OnActivate, в нем бы оно закрылось и не показалось бы вообще.
Я пробовал следующий метод:
На форму ставится таймер, он активируется в OnShow, в обработчике таймера выполнялись действия и окно закрывалось.

---------
Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 3-ий класс)
Ответ отправлен: 31.01.2007, 20:21

Отвечает: PaVeL_Ekt
Здравствуйте, Зиганшин Рустем!

Возможно Вам проще прописать данную функцию в отдельном модуле, прописать все Uses и по вместо вызова модальной формы вызывать функцию из модуля.
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: Студент)
Ответ отправлен: 01.02.2007, 13:25
Оценка за ответ: 4
Комментарий оценки:
Спасибо, но дело в том, что мне форма нужна для отображения прогресса выполнения (процесс занимает длительное время).

Отвечает: Gladiator
Здравствуйте, Зиганшин Рустем!

var
ProgressForm: TProgressForm;
Abort: boolean;

procedure TProgressForm.FormActivate(Sender: TObject);
begin
<Здесь выполнение того, что вы хотите>
Abort:=True;
end;

procedure TProgressForm.Timer1Timer(Sender: TObject);
begin
if Abort then Close;
end;

procedure TProgressForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
ModalResult:=mrOK;
end;
Ответ отправил: Gladiator (статус: 7-ой класс)
Ответ отправлен: 02.02.2007, 08:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо, я приблизительно так и сделал :)


Вопрос № 73.524
Здраствуйте Уважаемые эксперты,
Помогите пожалуйста разобратся с одной проблемой:
Как можно зделать чтобы при нажатии на кнопку выхода на форме, (этот крестик в правом верхнем углу) Форма не закрывалась бы а сворачивалась, похоже как в ICQ и Skype программах, и еще когда форма свёрнута ( в таскбаре) у меня в программе есть TrayIcon, как зделать чтобы при нажатии на TrayIcon форма развернулась бы с трея и былабы в нормальном положении, Form1.WindowState:=wsNormal неработает, а Form1.WindowState:=wsMaximized разворачивает на весь экран, но мне нужно чтобы развернулась в такие размеры в каких она сразу была.
Заранее спасибо.
С уважением, Станислав.
Отправлен: 31.01.2007, 20:16
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: monah
Здравствуйте, Станислав!
Для обработки выхода создайте у формы событие FormClose и в его обработчике присвойте переменной Action значение caMinimize.

По второй части вопроса, к сожалению, не могу подсказать, так как Вы вероятно пользуетесь 2005 или 2006 версией делфи, или же компонентом стороннего разработчика.
---------
festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 31.01.2007, 20:24
Оценка за ответ: 4
Комментарий оценки:
Спасибо

Отвечает: Базанов Иван Александрович
Здравствуйте, Станислав!
1. В обработчике OnClose установи параметр Action := caNone и вызови Form1.WindowState:=wsMinimized или Application.Minimize
2.
ShowWindow(Handle, SW_SHOWNORMAL);
SetForegroundWindow(Handle);
---------
Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 3-ий класс)
Ответ отправлен: 31.01.2007, 20:26
Оценка за ответ: 5
Комментарий оценки:
Спасибо, полностю помогло


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

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

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

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

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


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


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

В избранное