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

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


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

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

Выпуск № 920
от 10.09.2007, 06:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 467, Экспертов: 81
В номере:Вопросов: 6, Ответов: 14


Вопрос № 100749: Здравствуйте Уважаемые!Существуют различные варианты сообщений со значками!Приведите пожалуйста мне примеры: Exception.Create('.....'); - значок: красный кружок с белым крестом ShowMessage('.....'); - сообщение без значка и т.д...
Вопрос № 100803: написал два маненьких класса наследником от TCustomControl Программно помещаю один компонент внутрь другого.(создаю поле в дном из классов) При рнедактировании на форме внутреннего компонента (изменении длины ширины и тд) изменения отобража...
Вопрос № 100805: Здравствуйте, уважаемые эксперты! Начал изучать Делфи, подскажите пожалуйста где можно скачать словарь терминов или учебник для начинающих. Заранее спасибо....
Вопрос № 100818: Привет всем! Есть такая ситуация: необходимо перехватывать записываемые на диск файлы и, например, шифровать их. Если есть идеи, пожалуйста поделитесь, заранее большое спасибо! ...
Вопрос № 100825: Привет! Снова я! Думаю я уже надоел, но есть еще вопросик... Кто-н. знает как определить имя последнего сохраненного файла в директории? Заранее благодарен за ответ! ..
Вопрос № 100847: Уважаемые эксперты как узнать расположение курсора мыши относительно данного компонента ?...

Вопрос № 100.749
Здравствуйте Уважаемые!Существуют различные варианты сообщений со значками!Приведите пожалуйста мне примеры:

Exception.Create('.....'); - значок: красный кружок с белым крестом
ShowMessage('.....'); - сообщение без значка
и т.д
Отправлен: 04.09.2007, 06:47
Вопрос задал: Зотов Геннадий Александрович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Зотов Геннадий Александрович!
Самый простой способ работы с сообщениями (и различными значками в них) показывает в своей программе Dimon Karra вот ссылка на нее: http://slil.ru/24812341
так же оттуда можно взять код сообщения.
---------
Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Ответ отправил: Кулаков Антон Сергеевич /SandroNec (статус: 4-ый класс)
Ответ отправлен: 04.09.2007, 06:53
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое за ссылку и быстрый ответ

Отвечает: Omickron
Здравствуйте, Зотов Геннадий Александрович!

Я последнее время люблю использовать функцию MessageBox. В ней можно задавать и заголовок, и текст, и значок, а главное - кнопки с рускими надписями.

Ну ещё есть MessageDlg функция. Но кнопки там с латинскими символами.
Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 04.09.2007, 07:03
Оценка за ответ: 3
Комментарий оценки:
Спасибо с функциями понятно ещё бы примеров бы немного

Отвечает: Shurka
Здравствуйте, Зотов Геннадий Александрович!
Можно воспользоваться WinAPI функцией MessageBox. Указав подходящие параметры, можно показать сообщение с любым значком доступным в Windows. Чтобы сообщение показывалось над формой первый ее параметр должен быть Form.Handle
Ответ отправил: Shurka (статус: 3-ий класс)
Ответ отправлен: 04.09.2007, 15:07
Оценка за ответ: 4
Комментарий оценки:
Спасибо уже подсказали


Вопрос № 100.803
написал два маненьких класса наследником от TCustomControl
Программно помещаю один компонент внутрь другого.(создаю поле в дном из классов)
При рнедактировании на форме внутреннего компонента (изменении длины ширины и тд) изменения отображаются адекватно, а при запуске программы происходит возврат а начальное состояние(как будто редактирование и не происходило)...

Подсобите чем можите плз.
Отправлен: 04.09.2007, 14:25
Вопрос задал: Маркин максим олегович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Shurka
Приветствия!
Дело в том, что при создании компонента на форме (т.е когда программа уже работает) происходит вызов конструктора внешнего объекта, а он уже должен вызвать конструктор внутреннего объекта. Механизм же передачи параметров, настроенных во время дизайна, во внутренний объект не действует. Остается только программно устанавливать нужные размеры внутреннего компонента в конструкторе родительского объекта или где нибудь еще.
Ответ отправил: Shurka (статус: 3-ий класс)
Ответ отправлен: 04.09.2007, 15:08


Вопрос № 100.805
Здравствуйте, уважаемые эксперты! Начал изучать Делфи, подскажите пожалуйста где можно скачать словарь терминов или учебник для начинающих. Заранее спасибо.
Отправлен: 04.09.2007, 14:44
Вопрос задал: Александр. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Delph
Здравствуйте, Александр.!

Думаю, словарь терминов Вы найдёте в большинстве книг по Delphi. Зарегистрируйтесь на сайте www.librus.ru - я накачал оттуда немало интересных книг, в том числе и по Delphi. Вот ещё ссылки, но уже на другие ресурсы:
http://c-books.info/books/load.php?ty=delphi&lng=RU
http://www.delphikingdom.ru/


---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 8-ой класс)
Ответ отправлен: 04.09.2007, 15:42


Вопрос № 100.818
Привет всем!
Есть такая ситуация:
необходимо перехватывать записываемые на диск файлы и, например, шифровать их.
Если есть идеи, пожалуйста поделитесь, заранее большое спасибо!
Отправлен: 04.09.2007, 16:41
Вопрос задал: Бакалов Артем Маркович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Shurka
Здравствуйте, Бакалов Артем Маркович!
Единственный способ это сделать, который мне приходит в голову - написать свой драйвер файловой системы.
Ответ отправил: Shurka (статус: 3-ий класс)
Ответ отправлен: 05.09.2007, 06:08

Отвечает: Дмитрий С.
Здравствуйте, Бакалов Артем Маркович!
я как-то сталкивался с проблемой шифрования (маскировки) данных. Дело было с текстовыми файлами. Я делал следующее - перебирал весь текст файла посимвольно и каждый символ презаписывал в уже типизированный файл следующим образом:

write(File_X, Ord(simvol)); // var file_x: file of integer;

а если нужно было перевести всё в божеский вид проделывал обратную операцию:

write(File_Y, Chr(simvol)); // var file_y: text;

Приложение:

---------
Наши программисты самые программистые программисты!..

Ответ отправил: Дмитрий С. (статус: 3-ий класс)
Ответ отправлен: 05.09.2007, 13:35
Оценка за ответ: 4
Комментарий оценки:
Спасибо!
Для шифрации я использую UnitIDEA.pas, а вот как переписать именно записываемый файл на свой - вот основной вопос!


Вопрос № 100.825
Привет! Снова я! Думаю я уже надоел, но есть еще вопросик...
Кто-н. знает как определить имя последнего сохраненного файла в директории?
Заранее благодарен за ответ!
Отправлен: 04.09.2007, 17:52
Вопрос задал: Бакалов Артем Маркович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Alexey Bednov
FindFirst/FindNext с последующей сортировкой/отбором по дате и времени.
Ответ отправил: Alexey Bednov (статус: 1-ый класс)
Ответ отправлен: 04.09.2007, 18:15

Отвечает: Omickron
Здравствуйте, Бакалов Артем Маркович!

Есть такой способ:
при помощи функций FindFirst, FindNext, FindClose организуем перебор всех файлов в директории.
Далее, определяем в свойствах каждого файла время его изменения (как точно это сделать, я не помню, но можно поискать в сети на форумах; наверняка информация будет).
Тот файл, который был изменён позже всех (у кого дата изменения самая большая) - и есть последний сохранённый файл в директории.
Удачи.
Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 04.09.2007, 18:34

Отвечает: sir henry
Здравствуйте, Бакалов Артем Маркович!
Добавлю немного конкретики. :)
Термин "сохранён" неоднозначен. Он может быть последним создан и записан на диск, а может быть и сохранено изменения содержимого. Эа это отвечают разные атрибуты записи TSearchRec функций FindFirstFindNext. Причем запрятаны они довольно глубоко.
В этом отношении более удобна функции WinAPI FindFirstFileFindNextFile, которые информацию о найденом файле заносят в структуру WIN32_FIND_DATA, поля которой (в контексте вопроса) такие:
- ftCreationTime - время создания файла;
- ftLastAccessTime - время, когда последний раз файл открывали;
- ftLastWriteTime - время, когда была произведена последняя запись.
Пример:

Var
fd: ^WIN32_FIND_DATA;
List: TList;
i: integer;
fname: string; //Здесь будет имя последнего сохраненного файла
Begin
List:=TList.Create;
...
//Сначала ищем первый файл по маске
New(fd);
If FindFirstFile('c:Windows*.ini', fd^)<> INVALID_HANDLE_VALUE Then
//Теперь идем циклом по каталогу
Repeat
List.Add(fd);
New(fd);
Until not FindNextFile('c:Windows*.ini', fd^);
If List.Count>1 Then
For i:=1 To List.Count-1 Do
//Сравниваем два времени файлов
If CompareFileTime(WIN32_FIND_DATA(List.Items[i-1]).ftLastWriteTime, WIN32_FIND_DATA(List.Items[i]).ftLastWriteTime)=-1 Then
fname:=WIN32_FIND_DATA(List.Items[i-1]).cFileName
Else
fname:=WIN32_FIND_DATA(List.Items[i]).cFileName;
...
End;

Это только пример, но думаю идея понятна.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 04.09.2007, 19:29
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное за ответ, начну его пробовать.


Вопрос № 100.847
Уважаемые эксперты
как узнать расположение курсора мыши относительно данного компонента ?
Отправлен: 04.09.2007, 21:27
Вопрос задал: Кэр Лаэда (статус: Студент)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Виктор Пырлик
Здравствуйте, Кэр Лаэда!

Использовать событие OnMouseMove


procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label4.Caption := Format('X = %d Y = %d',[X,Y]);
end;


Данный обработчик я назначил всем визуальным компонентам что были на форме (кнопки, панели,список, мемо...).

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 04.09.2007, 21:45
Оценка за ответ: 4
Комментарий оценки:
не совсем то что я хотел, так как мне нужно узнать расположение мыши из другого юнита, так что события тут не подходят
нужно нечто вроди Mouse.CursorPos.X
но это даются координаты экранные а мне нужны относительно компонента.

Отвечает: Omickron
Здравствуйте, Кэр Лаэда!

Функция GetCursorPos возвращает экранные координаты курсора. Далее мы знаем экранные координаты формы (свойства Left и Top), затем мы знаем координаты компонента в клиентских координатах формы. Остаётся только ширина боковых границ формы и высота заголовка формы, но это постоянные величины (к сожалению, я не помню их).
Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 04.09.2007, 22:39
Оценка за ответ: 4
Комментарий оценки:
почти то что нужно.. но не совсем

Отвечает: PGM
Здравствуйте, Кэр Лаэда!

1. GetCursorPos(p) - получаем экранные координаты;
2. потом p := Component.ScreenToClient(p) - координаты относительно компонента.
Ответ отправил: PGM (статус: 9-ый класс)
Ответ отправлен: 05.09.2007, 09:16
Оценка за ответ: 5
Комментарий оценки:
Спасибо то что нужно

Отвечает: Дмитрий С.
Здравствуйте, Кэр Лаэда!
чтобы узнать положение мыши на форме, советую добавить в код программы следующее:
в событие OnMouseMove Вашей формы добавить строку

Your_Form_Name.Caption := IntToStr(x) + '*' + IntToStr(y);

Теперь на заголовке формы будут отображаться координаты положения указателя мыши
---------
Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 3-ий класс)
Ответ отправлен: 05.09.2007, 13:29
Оценка за ответ: 1
Комментарий оценки:
во первых не то что мне нужно, во вторых ответ повторный


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 30.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное