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

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


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

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

Выпуск № 447
от 18.04.2006, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 310, Экспертов: 67
В номере:Вопросов: 8, Ответов: 21


Вопрос № 40085: Здравствуйте! Подскажите, плиз, как сделать неактивной кнопку "Развернуть"/"Свернуть" вверху формы и запретить юзера изменять размеры формы? Заранее благодарен!...
Вопрос № 40086: Здравствуйте! Подскажите, пожалуйста хороший сайт с иконками для использования в приложениях! Буду очень признателен!...
Вопрос № 40119: Привет. Пишу программку, что-то вроде help'a. И мне нужно, чтобы по ходу текста были ссылочки, нажав на которые открывалась бы форма. Подскажите как реализовать идею. ...
Вопрос № 40127: Здраствуйте уважаемые эксперты. Возник вопрос как в StringGrid вставить текст из буфера обмена и соответственно скопировать выделенную клетку в буфер обмена....
Вопрос № 40151: Здравствуйте! Подскажите, плиз, как сделать, чтобы в статус-баре все время отображался определенный текст, в зависимости от выбранной радио-кнопочки? Заранее спасибо!...
Вопрос № 40157: Здраствуйте, эксперты! Помогите, пожалуйста, с такой проблемой: написал для кафедры программу-тест. Вопросы, варианты ответов и правильный вариант хранятся в Ini-файле (прада, расширение я сделал *.dat). Т.е. вполне реально, что особо одаренные с...
Вопрос № 40162: Уважаемые эксперты. Подскажите, как можно в Delphi создать приложение для управления удаленным компьтером (перезагрузка, выключение). ...
Вопрос № 40163: Здравствуйте, эксперты! Подскажите, можно ли организовать вывод записей в ListBox разными цветами. Меняю ListBox1.Font.Color для определённых записей. Выводится всё одним цветом....

Вопрос № 40.085
Здравствуйте! Подскажите, плиз, как сделать неактивной кнопку "Развернуть"/"Свернуть" вверху формы и запретить юзера изменять размеры формы? Заранее благодарен!
Отправлен: 12.04.2006, 12:52
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Андрющенко Вячеслав Васильевич!
Запретить изменять размеры можно выбрав Borderstyle="bsSingle" и
BorderIcons biMinimize=false biMaximize=false
Ответ отправил: Устинов Сергей Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 12.04.2006, 13:07

Отвечает: Рубан Николай Николаевич
Здравствуйте, Андрющенко Вячеслав Васильевич!

Для запрта кнопок выбери в свойствах формы BorderIcons и поставь соответственно false для того чтобы кнопка была не активна

Для запрета изменения разменра формы нужно изменить свойство BorderStyle на bsSingle
---------
Мыслю - занчит существую (Декарт)
Ответ отправил: Рубан Николай Николаевич (статус: 3-ий класс)
Ответ отправлен: 12.04.2006, 13:11

Отвечает: Проходящий Мимо
Здравствуйте, Андрющенко Вячеслав Васильевич!
Вам нужно свойство формы BorderIcons.biMaximize в инспекторе объектов выставить в false или Form1.BorderIcons := Form1.BorderIcons - [biMaximize].
Для запрета изменений размеров формы можно выставить свойство Form1.BorderStyle := bsSingle;
Обработка собщений Windows дает больше возможностей, например разрешить изменять размер окна не более или не менее какого-то значения:

//добавить в объявление класса формы
protected
procedure WMGetMinMaxInfo(var Message: TMessage); message WM_GETMINMAXINFO;
end;

//в реализации
procedure TForm1.WMGetMinMaxInfo(var Message: TMessage);
type
PTMinMaxInfo = ^TMinMaxInfo;
begin
with PTMinMaxInfo(Message.LParam)^.ptMinTrackSize do
begin
//окно будет не меньше 750х550, больше - может
x := 750;
y := 550;
end;
inherited;
end;
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 2-ой класс)
Ответ отправлен: 12.04.2006, 13:12


Вопрос № 40.086
Здравствуйте! Подскажите, пожалуйста хороший сайт с иконками для использования в приложениях! Буду очень признателен!
Отправлен: 12.04.2006, 13:10
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Рубан Николай Николаевич
Здравствуйте, Андрющенко Вячеслав Васильевич!

Вот посмотрите на эту ссылочку
http://www.megarelax.ru/download/icons.html
или
http://www.capa.ru/2006/02/20/Tech-Icons-tehnicheskie-ikonki.html
---------
Мыслю - занчит существую (Декарт)
Ответ отправил: Рубан Николай Николаевич (статус: 3-ий класс)
Ответ отправлен: 12.04.2006, 13:31

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Андрющенко Вячеслав Васильевич!
Посмотри тут:
http://www.win-design.ru/o_ico.shtml
Ответ отправил: Устинов Сергей Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 12.04.2006, 13:33

Отвечает: Проходящий Мимо
Здравствуйте, Андрющенко Вячеслав Васильевич!
посмотрите на:
http://iheartny.com//icons.html
http://sweb.ws/ico/1.html
Очень много ссылок на коллекции иконок http://doci.nnm.ru/icons
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 2-ой класс)
Ответ отправлен: 12.04.2006, 13:50

Отвечает: Brutaller
Здравствуйте, Андрющенко Вячеслав Васильевич!
Вот сайт http://npix.ru , тоже есть ссылки на всякие иконки и прочие украшательства.
Ответ отправил: Brutaller (статус: 1-ый класс)
Ответ отправлен: 14.04.2006, 08:14


Вопрос № 40.119
Привет.
Пишу программку, что-то вроде help'a. И мне нужно, чтобы по ходу текста были ссылочки, нажав на которые открывалась бы форма.
Подскажите как реализовать идею.
Отправлен: 12.04.2006, 20:06
Вопрос задал: Denton (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Delphin
Здравствуйте, Denton!
1. Использовать веб-браузер в своем приложении и обрабатывать ссылки. (есть событие)
2. Использовать RxRichEdit и отлавливать ссылки. (есть событие)
3. Написать свой собственный редактор или использовать сторонний. На torry.net я даже нашел несколько порядочных редакторов, который могли сделать то, что ты хочеш.

---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com
Ответ отправил: Delphin (статус: Студент)
Ответ отправлен: 12.04.2006, 21:17


Вопрос № 40.127
Здраствуйте уважаемые эксперты. Возник вопрос как в StringGrid
вставить текст из буфера обмена и соответственно скопировать выделенную клетку в буфер обмена.
Отправлен: 12.04.2006, 21:21
Вопрос задал: Костя Симанович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, Костя Симанович!
Попробуйте так через пункты меню "Копировать" и "Вставать":

procedure TForm1.Paste1Click(Sender: TObject);
begin
SendMessage(GetFocus, WM_PASTE, 0, 0);
end;

procedure TForm1.Copy1Click(Sender: TObject);
begin
SendMessage(GetFocus, WM_COPY, 0, 0);
end;

Эти методы посылают сообщение окну с текущим фокусом.
Автор: Kurt Barthelmess

---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 2-ой класс)
Ответ отправлен: 13.04.2006, 11:43

Отвечает: Рубан Николай Николаевич
Здравствуйте, Костя Симанович!

На сколько я понял вы пытались скопировать текст просто выделив ячейку.
Но если свойство Options.goEditing=true то при выделении ТЕКСТА ячейки все прекрастно копируется и в ставляется из буфера.
---------
Мыслю - занчит существую (Декарт)
Ответ отправил: Рубан Николай Николаевич (статус: 3-ий класс)
Ответ отправлен: 13.04.2006, 13:15


Вопрос № 40.151
Здравствуйте! Подскажите, плиз, как сделать, чтобы в статус-баре все время отображался определенный текст, в зависимости от выбранной радио-кнопочки? Заранее спасибо!
Отправлен: 13.04.2006, 04:19
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bochvarov NikB
Здравствуйте, Андрющенко Вячеслав Васильевич!

В FormCreate:
StatusBar.SimplePanel := true;
StatusBar.SimpleText := '';

В КнопочкеКлик:
StatusBar.SimpleText := 'Я кликнул';
Ответ отправил: Bochvarov NikB (статус: 7-ой класс)
Ответ отправлен: 13.04.2006, 04:33

Отвечает: Рубан Николай Николаевич
Здравствуйте, Андрющенко Вячеслав Васильевич!

Я так понял что вы используете несколько радио-кнопок, тогда целесообразно использовать компонент RadioGroup. И для него такое событие:

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
StatusBar1.Panels.Items[0].Text:=RadioGroup1.Items.Strings[RadioGroup1.itemindex];
end;
---------
Мыслю - занчит существую (Декарт)
Ответ отправил: Рубан Николай Николаевич (статус: 3-ий класс)
Ответ отправлен: 13.04.2006, 12:20


Вопрос № 40.157
Здраствуйте, эксперты! Помогите, пожалуйста, с такой проблемой:
написал для кафедры программу-тест. Вопросы, варианты ответов и правильный вариант хранятся в Ini-файле (прада, расширение я сделал *.dat). Т.е. вполне реально, что особо одаренные студенты откроют этот файл через Блокнот и все сдадут!:)) Если какие-нибудь варианты защиты данных (как-нибудь прикомпилировать к екзешнику, положить в DLL и т.д) - при этом, чтобы принцип работы с INI остался - прога уже ведь написана! Хотелось бы, конечно, чтобы файл могли редактировать преподаватели - Менять список вопросов и т.д. Помогите, пожалуйста! Заранее спасибо!
Отправлен: 13.04.2006, 07:01
Вопрос задал: Neiroman (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Полховский Александр Владимирович
Здравствуйте, Neiroman!
Хорошо было бы шифровать вариант ответа, используя системное время или какую-нибудь математическую фенкцию. Сейчас что-нибудь простенькое наваяю...

var
ThisTime: TDateTime;
DecryptStr, CryptStr: string;
Multiplier:byte;
RandChar: char;
begin
ThisTime:=now;
Multiplier:=random(200)+1;
RandChar:=chr(ord('A')+random(50));
CryptStr:=ansireversestring(inttostr(datetimetofiledate(thistime)))+RandChar+inttostr(Multiplier)+'|'+inttostr(Multiplier*datetimetofiledate(ThisTime)*strtoint(edit1.Text)+ord(RandChar));//edit1.Text - шифруемое число (в текстовом виде, естественно)

Тут использовалась простейшая линейная функция. Все её параметры мы записали в строку (в модификации участвовало системное время, его мы записали превым в перевёрнутом виде). Расшифровать, конечно, можно, на надо наверняка знать результат, понимать многие вещи в программировании и быть гением :) Если расшифруют - можно смело ставить 5 ! Шучу, конечно.
надеюсь, расшифровать Вы сами сможете.

Ещё посоветую базу держать в Тмутаракани, чтоб её попросту никто не нашёл :)

Удачи.
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 13.04.2006, 07:32

Отвечает: sir henry
Здравствуйте, Neiroman!
Реальная защита в Вашем случае - только шифрование, т.к. файл у Вас текстовый. Можно применить простейший алгоритм XOR, данные при этом в текстовом редакторе читаться не будут, точнее там будет бессмыслица. Естественно редактировать этот файл можно будет только средствами самой программы, т.е. после расшифровки.
Просто прикомпилировать к экзешнику тоже не выход, поскольку у Вас алгоритм для работы с INI-файлом, при запуске программы нужно будет этот INI выгрузить на диск.
DLL - та же проблема, что и просто с текстовым файлом. В текстовом редакторе там будут видны ответы открытым текстом.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 13.04.2006, 07:33

Отвечает: AnD1
Здравствуйте, Neiroman!
Необходимо использовать шифорвание. Например, в приложении алгоритм RC4 (достатоно стойкий ;) ). И теперь операции r/w Вашего файла происходят так:
CryptFile; // разшифровали
{чтение/запись ini-шника}
CryptFile; //зашифровали

Приложение:

Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 13.04.2006, 10:03

Отвечает: Diman_A
Здравствуйте, Neiroman!
Вы не уточнили, каким образом вам нужно шифровать информацию: можно шифровать стоки, в которых содержатся правильные ответы, либо шифровать весь файл.
Шифрование всего файла:
http://www.noil.pri.ee/downloads/component/Security/Crypting/aeslib.zip - шифрование по алг. AES
http://www.pssoft.ru/files/vcl/dcpcrypt.exe - отличный набор компонентов для реализации шифрования по самым известным алгоритмам. (размер 188 Kb).
Ну, а строки можно шифровать с помощью алгоритмов XOR или DES. Примеры этих и других алгоритмов есть в DelphiWorld http://delphiworld.narod.ru/ в разделе синтаксис-шифрование. Советую скачать саму базу DelphiWorld (~20 мб) - если программируете, будет очень полезно.
По теме вашей программы.
В 55 номере журнала "Хакер" (качайте с www.wisesoft.ru) есть статья Delphi: Тест для Большого Дяди на все 100! В ней как раз и рассмотрено создание тестирующей программы и редактора вопросов к ней. Только там основой является не INI, а XML файл. По моему, намного удобней.
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 13.04.2006, 10:51


Вопрос № 40.162
Уважаемые эксперты. Подскажите, как можно в Delphi создать приложение для управления удаленным компьтером (перезагрузка, выключение).
Отправлен: 13.04.2006, 08:56
Вопрос задал: Сапожников Владимир Алексеевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Злоумышленник
Здравствуйте, Сапожников Владимир Алексеевич!
В Инете можно взять книжку (а лучше купить в магазине, не пожалеешь) М. Флёнов "Программирование в Delphi глазами ][акера". Там на стр. 176-186 есть раздел 4.9. Троянский конь. Это то, что тебе надо.
---------
No admins!
Ответ отправил: Злоумышленник (статус: 6-ой класс)
Ответ отправлен: 13.04.2006, 10:05

Отвечает: AnD1
Здравствуйте, Сапожников Владимир Алексеевич!
Это называется клиент-серверная архитектура. Создаете две программы - первая серевер ("висит" на удаленном компе) вторая - клиент (ей вы управляете удаленным компом). Подробное создание такой проги описано здесь:
http://www.realcoding.net/article/view/250?ShmID=c8e98affb9edf6ad2effb2ed66f2ac93
Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 13.04.2006, 10:15


Вопрос № 40.163
Здравствуйте, эксперты!
Подскажите, можно ли организовать вывод записей в ListBox разными цветами. Меняю ListBox1.Font.Color для определённых записей. Выводится всё одним цветом.
Отправлен: 13.04.2006, 09:40
Вопрос задал: Ramil (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Ramil!
Поставьте для ListBox: style="lbOwnerDrawFixed" и перерисовывайте каждую строку по своему усмотрению через событие OnDrawItem. Вот самый простой вариант:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
ListBox1.Canvas.Font.Color:=RGB(Index*Index,Index*Index,Index*Index*Index);
ListBox1.Canvas.TextOut(Rect.Left+1,Rect.Top+1,ListBox1.Items[Index]);
end;


Рисование как на обычной канве (Canvas).
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 13.04.2006, 10:00
Оценка за ответ: 5
Комментарий оценки:
Спасибо, Ерёмин Андрей !

Отвечает: Рубан Николай Николаевич
Здравствуйте, Ramil!

Ответ такой:

Изменяем сначало свойтво Style объекта ListBox примерно так:
ListBox1.Style:=lbOwnerDrawVariable;

А затем пишем такой обработчик на событие OnDrawItem:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox).Canvas do
begin
case Index mod 3 of
0: Font.Color := clBlue;
1: Font.Color := clRed;
2: Font.Color := clGreen;
end;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]);
end;
end;
В данном примере строки перекрашиваются с периодим 3. (Blue,Red,Green,Blue,Red,Green,..........)
---------
Мыслю - занчит существую (Декарт)
Ответ отправил: Рубан Николай Николаевич (статус: 3-ий класс)
Ответ отправлен: 13.04.2006, 13:06

Отвечает: Diman_A
Здравствуйте, Ramil!
Установите свойство ListBox1.Style равным lbOwnerDrawFixed, а в обработчик OnDrawItem напишите код, приведенный в приложении.

Приложение:

Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 13.04.2006, 14:36


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.30 (beta) от 09.04.2006
Яндекс Rambler's Top100

В избранное