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

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


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

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

Выпуск № 441
от 12.04.2006, 09:35

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


Вопрос № 39541: Здравствуйте, уважаемые эксперты! В своем проекте я хочу использовать QuickReports. Скажите, пожалуйста, будет ли моя программа печатать отчеты на другом комп-ре, где не установлен Delphi? Заранее спасибо!...
Вопрос № 39572: Подскажите компоненты для делфи 6 и 2006 для работы с Events в NT и вообше для работы с системой на НТ...
Вопрос № 39573: Есть две формы, названия которых “Client” и “Server”. На форме “Client” лежит компонент TClientsocket с закладки Internet. На форме “ Server ” лежит компонент T Serversocket. Каждая из форм содержит две кнопки: ‘Соединиться’ и ‘Отправить’. Обработка ...
Вопрос № 39575: Вопрос Делаю программу в которой нужно вывести некоторый текст помощи. Как (и куда) записать текст? Не используя дополнительные окна и формы (по простому). Пример. Надо чтобы текст Помощи (заранее описанный где либо, наприме...
Вопрос № 39601: Графический вопрос. Кто знает формулу рисование звезды? Короче, надо нарисовать N-конечную звезду. Давно ищу эту формулу или способ....

Вопрос № 39.541
Здравствуйте, уважаемые эксперты!
В своем проекте я хочу использовать QuickReports. Скажите, пожалуйста, будет ли моя программа печатать отчеты на другом комп-ре, где не установлен Delphi? Заранее спасибо!
Отправлен: 06.04.2006, 13:32
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Андрющенко Вячеслав Васильевич!
Будет. Репорты станут частью исполняемого файла.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал)
Адрес: Санкт-Петербург
WWW: http://www.sport-diary.ru
ICQ: 28260749
----
Ответ отправлен: 06.04.2006, 13:35

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

Будет, если будете компилировать без использования пакетов, или при их импользовании будете в дополнение к приложению и остальным пакетам распространяить еще и qrpt*.bpl
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 2-ой класс)
Ответ отправлен: 06.04.2006, 13:37

Отвечает: Cheater76
Здравствуйте, Андрющенко Вячеслав Васильевич!
Лучше пользоваться FastReport 3.10
Ответ отправил: Cheater76 (статус: 3-ий класс)
Ответ отправлен: 06.04.2006, 15:45


Вопрос № 39.572
Подскажите компоненты для делфи 6 и 2006 для работы с Events в NT и вообше для работы с системой на НТ
Отправлен: 06.04.2006, 19:15
Вопрос задал: Negruzzi Cristian (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Николай Б.
Здравствуйте, Negruzzi Cristian!
А какие "Events" Вы имеете ввиду? Если события от системы - то, проще проще всего писать обработчик самому, иначе, добавив очередной компонент, Вы увеличите размер программы. & #1045;сли я не ошибаюсь, таких компонентов нет.
Удачи!
Ответ отправил: Николай Б. (статус: 3-ий класс)
Ответ отправлен: 06.04.2006, 19:27
Оценка за ответ: 3


Вопрос № 39.573
Есть две формы, названия которых “Client” и “Server”. На форме “Client” лежит компонент TClientsocket с закладки Internet. На форме “ Server ” лежит компонент T Serversocket. Каждая из форм содержит две кнопки: ‘Соединиться’ и ‘Отправить’. Обработка кнопки ‘Соединиться’ обеспечивает соединение Сервера и Клиента.
Как сделать так чтобы при нажатии кнопки “Соединиться” на форме «Сервер» он соединился бы с формой Client, на которой лежит TClientsocket и можно было бы передавать строки текста в Tedit, который расположен на форме Client, при нажатии на форме «Сервер» кнопки «Отправить», и обратно, чтобы Клиент мог соединиться с сервером и ответить на сообщение?
Отправлен: 06.04.2006, 19:27
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Артём Шегеда
Здравствуйте, Rewer8!

Ты на поверишь, но эта задача не у одного тебя в голове появлялась ;)
http://www.shegeda.chat.ru/InternetServer.zip - исходники сервера и клиента
Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 06.04.2006, 20:03
Оценка за ответ: 5


Вопрос № 39.575
Вопрос

Делаю программу в которой нужно вывести некоторый текст помощи.
Как (и куда) записать текст?
Не используя дополнительные окна и формы (по простому).
Пример.
Надо чтобы текст Помощи (заранее описанный где либо, например, в const T='...') выводился к примеру, в TForm1.Label1.Caption:=Т;
Но этот текст имеет большую длину > 255 символов (или немного меньше).
Как вoобще создавать такие сообщения и где их хранить?
Желательно не создавать дополнительные файлы на диске (в TXT формате или ещё как-то).
Лучше всего в программном "теле" самой EXE-программе.
Я хотел было сделать по простому, записать его как
const Text1 = 'Текст1 ...';
Text2 = 'Текст2 ...';
Но у меня не получилось. Компилятор выдал ошибку типа: 'Unterminated строка' (Delphi 7.0 Rus Version)
Я пробовал записать и в самой процедуре в программе - не вышло.
Например, процедура
procedure HelpProg(O:TObject); // Помощь по программе
выводит панель Label в которой должен быть напечатан этот текст (он большой).
Массив что ли создавать надо? Или как?

P.S. Я программер-любитель (ламер), люблю программировать (Pascal - любимый язык).
Поэтому, пожалуйста, по простому объясните мне.
Я даже окна дополнительные не умею создавать.
Программы мои работают в одном окне + окно с небольшой подсказкой типа MessageDlg(...) и всё.
Например, если нужно, я делаю Неактивными те элементы, которые в данном случае не нужны и активирую другие
и наоборот.

Заранее всем... ещё раз...
Алекс
Отправлен: 06.04.2006, 19:36
Вопрос задал: AlexD (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cheater76
Здравствуйте, AlexD!
Можно выкрутиться и так
T='строка1'+#13+'строка2'+#13+'строка3'+#13+'строка4'+#13+'строка5'';
Ответ отправил: Cheater76 (статус: 3-ий класс)
Ответ отправлен: 06.04.2006, 20:08

Отвечает: Tamashev Denis M
Здравствуйте, AlexD!
Ну можно в окошке выкинуть !
Например ничего сложного: MessageDlg(Сообщение, Тип, Кнопки, КонтекстСправки);
Допустим: MessageDlg(T,mtInformation,[mbOk],0);
Либо в файла !
И можно вывести в Memo:
Memo1.Lines.LoadFromFile('Help.txt');
Help.txt должен лежать где и файл .exe твоего проекта !
Ну способов много но я советую использовать MessageDlg(T,mtInformation,[mbOk],0);
Правдо окошко нехилое откроеца !
Ну сам смотри !
Удачи !!!
Ответ отправил: Tamashev Denis M (статус: 2-ой класс)
Ответ отправлен: 06.04.2006, 20:33

Отвечает: Ерёмин Андрей
Hello, AlexD!
Можно сделать следующим образом: для всех нужных компонент пропишите в свойстве Hint нужные подсказки и поставьте для всех ShowHint = True. Затем поместите на форму TStatusBar (страница Win32) и установите для неё AutoHint = True. Теперь все подсказки будут дублироваться в строке состояния. Если же нужно выводить подскази в другом месте - то нужно обрабатывать событие Application.OnHint() - в этот момент в переменной Application.Hint будет подсказка для компонента, на который наведён курсор. Обрабатывать это событие проще специализированными компонентам - например TJvApplicationEvents из знаменитого JediVCL. Или же стандартным TApplicationEvents (со страницы Additional) - там тоже есть такое событие. Удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 06.04.2006, 21:32

Отвечает: Артём Шегеда
Здравствуйте, AlexD!

> Но этот текст имеет большую длину > 255 символов (или немного меньше).
Разве это большая длина? :) Для Паскаля это было бы уже проблемой, а для Delphi - нормально.
К делу... Строки (если они не разбиваются на абзацы) лучше хранить в ресурсах. Для этого создаём файл типа RC с любым именем, например, STRINGS.RC, и пишем в него единственную строку:
HELP STRINGS STRINGS.TXT
После чего этот RC-файл добавляем в проект. Предполагается, что в файле STRINGS.TXT находятся строки справочной инфолрмации. Теперь при запуске вызываем функцию LoadStrings (см. приложение) - и результат присваиваем какой-нибудь переменной типа TStringList.

PS. По-моему, скрывать/отображать контролы на форме по мере необходимости не есть хорошо. Для этих целей лучше пользоваться TPageControl, отображая нужные страницы

Приложение:

Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 06.04.2006, 21:37

Отвечает: sir henry
Здравствуйте, AlexD!
Есть у Дельфи такая неприятная особенность, если в строке написаной от руки больше чем 255 букв, то он ее отказывается считать за строку, потому что привык видимо к длине 255. :) Хотя и должен без проблем работать со строками до 2Гиг длиной.
Если у Вас получилась очень длинная строка, то разбейте ее на несколько покороче:
Const
c1 = 'Текст1 до 255 символов';
c2 = 'Текст2 до 255 символов';
c3 = 'Текст3 до 255 символов';
c4 = 'Текст4 до 255 символов';
p = #13#10;
А потом просто сложите.
Для справок как Вы описали, хорошо подходит функция ShowMessage. Сделайте на форме кнопку, обзовите ее "Помощь", а в событии OnClick кнопки напишите:
ShowMessage(c1+p+c2+p+c3+p+c4);
В результате у Вас появится симпотичное окошко с кнопкой ОК и длинной строкой, разбитой на несколько строк. Константа Р - это как раз символы перехода на новую строку, иначе, если ее не добавить, у Вас все будет в одну строку.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 07.04.2006, 06:59


Вопрос № 39.601
Графический вопрос.

Кто знает формулу рисование звезды?
Короче, надо нарисовать N-конечную звезду.
Давно ищу эту формулу или способ.
Отправлен: 07.04.2006, 01:30
Вопрос задал: AlexD (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, AlexD!
В Дельфи есть функция Polygon, которая рисует линии по заданному массиву координат типа TPoint.
Canvas.Polygon(Points: array of TPoint);
Вот например:
procedure TForm1.FormActivate(Sender: TObject);
begin
Canvas.Brush.Color := clTeal;
Canvas.Polygon([Point(10, 10), Point(30, 10),
Point(130, 30), Point(240, 120)]);
end;
Здесь данные введены непосредственно в функцию и приводятся к виду TPoint, что не всегда удобно. Лучше сформировать массив заранее, а потом указать его в качестве аргумента.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 07.04.2006, 07:14


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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

В избранное