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

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


Информационный Канал Subscribe.Ru


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

Выпуск № 108
от 05.12.2002, 18:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 327
Отправлено ответов: 597
Активность: 182.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Jadd
Статус: Профессиональный
Общий рейтинг: 142.04
[Подробней >>]
MEMOAK
Статус: Начальный
Общий рейтинг: 113.33
[Подробней >>]
Idle Sign
Статус: Опытный
Общий рейтинг: 146.66
URL: Blind Team
[Подробней >>]
 
Melkor
Статус: Начальный
Общий рейтинг: 130
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.1
[Подробней >>]
Vladimir
Статус: Опытный
Общий рейтинг: 110.83
Телефон: (08242) 43599 40099 раб 41255 дом
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.47
URL: Пристанище неодинокого программиста
[Подробней >>]
Vadim
Статус: Начальный
Общий рейтинг: 147.61
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.22
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 311. вставил в форму картинку. на эту картинку вставил label. Как сделать, чтобы фон этой метки был прозр... (ответов: 4)
Вопрос № 312. Как в проге на Delphi загружать другие проги? В Pascal знаю - exec,а в Delphi,говорят, нодо ету проц... (ответов: 5)
Вопрос № 313. Здрасьте ув.эксперты! Вот давно мучаюсь следующим вопросом: Например на форме: Label1 Label2 Labe... (ответов: 4)
Вопрос № 314. вставил в форму картинку. на эту картинку вставил CheckBox. Как сделать, чтобы фон этого Checkbox'a ... (ответов: 1)
Вопрос № 315. Доброе время суток, уважаемые Эксперты! Поскажите, пожалуйста, как определить размер бумаги,выбранны... (ответов: 3)
Вопрос № 316. Доброе время суток! Не подскажете, по какому принципу строятся демо-версии программ. Я имею ввиду ра... (ответов: 6)
Вопрос № 317. Помогите пожалуйста исправить следующие процедуры вывода выделенных записей из DBgrid в quickrep? Ка... (ответов: 3)

Вопросов: 7, ответов: 26


 Вопрос № 311

вставил в форму картинку. на эту картинку вставил label. Как сделать, чтобы фон этой метки был прозрачным?



Вопрос отправлен: 01.12.2002, 11:53
Отправитель: Tik (shal@gorodok.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Jadd

Здравствуйте, Tik!
Свойство у метки есть Transparency зовется. Вот если тыкнуть по нему в true, тогда фон метки станет прозрачным. Плохо ищете.

Ответ отправлен: 01.12.2002, 14:42
Отправитель: Jadd


Отвечает MEMOAK

Доброе время суток, Tik!


Ответ отправлен: 01.12.2002, 22:40
Отправитель: MEMOAK


Отвечает Idle Sign

Доброе время суток, Tik!
===== Pro bono publico, no bloody panico! =====
TLabel.Transparent := True;

Ответ отправлен: 01.12.2002, 17:05
Отправитель: Idle Sign


Отвечает Melkor

Доброе время суток, Tik!
Для того, чтобы сделать прозрачным фон Label, самый простой способ - поменять свойство TLabel.Transparent на True в окне свойств.


Ответ отправлен: 01.12.2002, 21:56
Отправитель: Melkor


 Вопрос № 312

Как в проге на Delphi загружать другие проги?
В Pascal знаю - exec,а в Delphi,говорят, нодо ету процедуру
саму писать.Может подкинете исходник?



Вопрос отправлен: 01.12.2002, 15:36
Отправитель: Byter (Byter2002@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Melkor

Здравствуйте, Byter! Доброго времени суток.
Для запуска приложения из своей проги не обязательно писать свою процедуру, можно использовать функцию: ShellExecute(<Запускающая форма>.Handle, 'open', , , , sw_Show)
Примечание:
1. В uses нужно прописать ShellAPI
2. Строковые значения , , желательно переделать в PChar (напр. PChar(FileName) или PChar('command.com'))
3. В некоторых случаях можно пропустить <Запускающая форма> и написать просто Handle

Ответ отправлен: 01.12.2002, 22:33
Отправитель: Melkor


Отвечает MEMOAK

Добрый день, Byter!
1) WinExec; (uses ... , Windows , ...)
Пример: Winexec(pchar('c:yourproject.exe'),SW_SHOWNORMAL);
2)ShellExecute; (uses ... , ShellApi , ...)
Пример: ShellExecute(handle, 'open',pchar('c:yourproject.exe'), nil, nil, SW_SHOWNORMAL);
Обязательно посмотрите полное описание этих функсии: WinApi. (понадобится в будушем 100%)


Ответ отправлен: 01.12.2002, 22:42
Отправитель: MEMOAK


Отвечает Idle Sign

Добрый день, Byter!
===== Pro bono publico, no bloody panico! =====
Назову процедуры, которые следует вызывать:
Рекомендуют пользоваться CreateProcess.
Можно WinExec, можно ShellExecute.
Все процедуры подробно описаны в Win32 Programming Reference (комплект Delphi).

Ответ отправлен: 01.12.2002, 17:04
Отправитель: Idle Sign


Отвечает vitya

Доброе время суток, Byter!
А вопросы все повторряются...
ShellExecute(); функция выполняет это занятие

Ответ отправлен: 01.12.2002, 16:08
Отправитель: vitya


Отвечает Jadd

Доброе время суток, Byter!
Глупости говорят. Кстати, exec или WinExec - не совсем корректный способ вызова программы из программы. Используй функцию WinAPI CreateProcess. Описание найдешь в хелпе или MSDN. Или пиши на jadd@rol.ru

Ответ отправлен: 01.12.2002, 15:54
Отправитель: Jadd


 Вопрос № 313

Здрасьте ув.эксперты!
Вот давно мучаюсь следующим вопросом:
Например на форме:
Label1
Label2
Label3
.
.
LabelN
И мне нужно по нажатию клавиши(например), в CAPTION занести их порядковые номера. Как это можно организовать циклом, чтобы было примерно следующее:
For i:=1 to n do
Label[i].Caption:=IntToStr(i);
Жду ответов...



Вопрос отправлен: 02.12.2002, 01:52
Отправитель: SVSrus

[Следующий вопрос >>] [Список вопросов]

Отвечает Vladimir

Приветствую Вас, SVSrus!
Подобный вопрос уже встречался. Надо динамически создавать массив "Лэйблов", вот тогда и обращаться к ним по номеру в массиве.


Ответ отправлен: 02.12.2002, 10:24
Отправитель: Vladimir


Отвечает Idle Sign

Приветствую Вас, SVSrus!
===== Pro bono publico, no bloody panico! =====
См. Архив рассылки Выпуск №094 за 01.11.2002, 10:20 - Вопрос №248.

Ответ отправлен: 02.12.2002, 13:39
Отправитель: Idle Sign


Отвечает Jadd

Добрый день, SVSrus!
Тут нечто подобное было с Edit'ами. Ищи в рассылке или, если не найдешь, пиши мне на jadd@rol.ru

Ответ отправлен: 02.12.2002, 02:05
Отправитель: Jadd


Отвечает Melkor

Добрый день, SVSrus!
Ответ: можно создать массив, в который поместить ссылки на эти Label-ы (в ручную), после чего можно использовать цикл. Пример:
type
TForm1 = class(TForm)
private
Labels: array [1..] of TLabel;
end;
procedure TForm1.OnCreate(Sender: TObject);
begin
Labels[1] := Label1;
Labels[2] := Label2;
...
Labels[] := LabelN;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I: Word;
begin
for I := 1 to do
Labels[I].Caption := IntToStr(I);
end;
Примечание:
- обозначает например

Ответ отправлен: 02.12.2002, 16:22
Отправитель: Melkor


 Вопрос № 314

вставил в форму картинку. на эту картинку вставил CheckBox. Как сделать, чтобы фон этого Checkbox'a был прозрачным?



Вопрос отправлен: 02.12.2002, 03:16
Отправитель: Tik (shal@gorodok.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Jadd

Здравствуйте, Tik!
В этой рассылке этот вопрос уже был. Поищи внимательно. Нет желания повторяться.

Ответ отправлен: 02.12.2002, 03:24
Отправитель: Jadd


 Вопрос № 315

Доброе время суток, уважаемые Эксперты!
Поскажите, пожалуйста, как определить размер бумаги,выбранный для печати. Меня интересует размер не в пикселах а в сантиметрах (милиметрах); т.к. количество пикселов меняется в зависимости от модели принтера.
То есть мне нужен способ определить количество пикселов на.....
Заранее спасибо.
Vitally.



Вопрос отправлен: 02.12.2002, 11:07
Отправитель: Vitally

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Доброе время суток, Vitally!

Подозреваю, что одним модулем Printers здесь не обойтись.
Для того, чтобы определить размер бумаги в миллиметрах, необходимо вызвать функцию Windows API GetDeviceCaps:

s := IntToStr(GetDeviceCaps(Printer.Handle, HORZSIZE))+'mm x ';
s := s + IntToStr(GetDeviceCaps(Printer.Handle, VERTSIZE))+'mm';
MessageBox(0,PChar(s),'Printer',MB_OK or MB_ICONINFORMATION);



Ответ отправлен: 02.12.2002, 12:34
Отправитель: Артём Шегеда


Отвечает Vadim

Доброе время суток, Vitally!
Если ты пользуешся объектом TPrinter, то узнать размер текущей выбраной бумаги можно с помощью WinAPI, фунцией GetDeviceCaps(см. приложение). Если указать в качестве второго параметра LogPixelX или LogPixelY, то можно получить разрешение принтера пикс./дюйм. С помощью их можно масштабировать картинки и приводить их к любому размеру на любом принтере.

Приложение:

Ответ отправлен: 02.12.2002, 13:17
Отправитель: Vadim


Отвечает Jadd

Доброе время суток, Vitally!
Класс TPrinter. Там, действительно размер бумаги в пикселах, но, что мешает перевести в метрическую систему? И зачем, если вывод на канву принтера все равно осуществляется в пикселах?

Ответ отправлен: 02.12.2002, 16:52
Отправитель: Jadd


 Вопрос № 316

Доброе время суток!
Не подскажете, по какому принципу строятся демо-версии программ. Я имею ввиду работу ее не более 30 дней (если следить за датой, то пользователь может ее изменить - дату). Меня мучает такой вопрос, даже если сделать привязку к количеству запусков, то можно сделать копию программы перед ее первым запуском. Если возможно, натолкните на какую-нибудь идею.
Заранее благодарен!



Вопрос отправлен: 02.12.2002, 16:25
Отправитель: Mykola

[Следующий вопрос >>] [Список вопросов]

Отвечает Vadim

Приветствую Вас, Mykola!
На сайте delphi.mastak.ru, лежит статья по поводу написания shareware программ.

Ответ отправлен: 03.12.2002, 06:53
Отправитель: Vadim


Отвечает Idle Sign

Приветствую Вас, Mykola!
===== Pro bono publico, no bloody panico! =====
Вопрос следовало бы задавать в форум по ассемблеру... Почему? Потому что тамошние эксперты тебе много чего скажут по этому поводу, а еще потому, что на всякую силу найдется противо-сила. Вот я к примеру в данный момент борюсь с защитой от копирования электронной версии словаря Макмиллана (MACMILLAN English Dictionary), пока ничего хорошего, но то что ланчер у него не пакованный определенно радует...

Ответ отправлен: 03.12.2002, 13:43
Отправитель: Idle Sign


Отвечает Jadd

Добрый день, Mykola!
Тут много способов. Для дельфи есть специальные компоненты, которые за этим всем следят. Но, ИМХО, если нужно сделать прогу, которую сложно сломать, надо брать коммерческие проги типа ASProtect со своими апи. Там есть все, о чем ты хочешь: и триальность на энное число дней, и антидебаггерные методы защиты, и компрессия исходного кода и прочее.

Ответ отправлен: 02.12.2002, 16:43
Отправитель: Jadd


Отвечает Vladimir

Доброе время суток, Mykola!
Я бы, наверно сделал так:
В реестре прописывается ключ, в котором указываются две даты -- начальная и конечная. При каждом запуске анализируется, если текущая дата больше начальной и меньше конечной -- запускаешь программу, причем начальную дату переписываешь на текущую.


Ответ отправлен: 02.12.2002, 16:52
Отправитель: Vladimir


Отвечает Melkor

Доброе время суток, Mykola!
Ответ:
1 способ - воспользоваться реестром, где запомнить время первого доступа; компонент - TRegistry, главное - прописать registry в uses.
2 способ - создать или использовать какой-нибудь системный ini-файл(компонент TIniFile, прописать inifile в uses) или просто файл с данными.

Ответ отправлен: 03.12.2002, 00:39
Отправитель: Melkor


Отвечает baldr

Здравствуйте, Mykola!
А ты в Микрософте спроси... :))
А если записать количество запусков в какую-нибудь неиспользуемую ячейку в
энергонезависимой памяти? Или в определенный сектор на диске? Или в
определенный файл операционной системы - переустанавливать всю ОС для того, чтобы какой-нибудь
SuperCalc работал пользователь не будет, так что это здесь прокатит. А вот Win вполне может
в следующей версии и в BIOS отмечаться! И вообще, они хотят там сделать активацию только через
Инет - представляешь, на основе твоего железа винда сгенерирует уникальный ключ, который на сайте
запомнится вместе с количеством запусков. И при следующем сеансе сравнит. Если только почует
что-нибудь подозрительное - ты на свой комп ничего круче Win2000 не установишь больше... :(
Это не фантазии - примерно так и хотят они с пиратами бороться.


Ответ отправлен: 03.12.2002, 00:39
Отправитель: baldr


 Вопрос № 317

Помогите пожалуйста исправить следующие процедуры вывода выделенных записей из DBgrid в quickrep? Кажется там все правильно(contradiction)?
У меня короче 2 формы на одна главная а на другой отчет. У меня почему то в отчете выходит только 1 запись.


Приложение:


Вопрос отправлен: 02.12.2002, 17:04
Отправитель: dude

[Следующий вопрос >>] [Список вопросов]

Отвечает Jadd

Добрый день, dude!
А отчет как сделан? Mster->Detail? Мало информации. По коду (на первый взгляд) все ок. Надо смотреть как сделан отчет сам по себе.

Ответ отправлен: 03.12.2002, 00:31
Отправитель: Jadd


Отвечает baldr

Доброе время суток, dude!
Вот честно скажу - не разбирался. Но мне кажется, что когда ты делаешь gotobookmark, все
выбранные поля сбрасываются... :( Как вариант могу посоветовать сделать disablecontrols применительно
к таблице, потом обращаешься к гриду, смотришь для каждой выбранной записи ее selected и считываешь
данные из таблицы. И что за конструкция такая: DBGrid1.DataSource.DataSet.gotobookmark ???
Ты что не знаешь, какая таблица у тебя связана с гридом? Так и пиши уж: table1.gotobookmark!
А то это что-то из области нетрадиционного общения!


Ответ отправлен: 03.12.2002, 00:39
Отправитель: baldr


Отвечает Vadim

Здравствуйте, dude!
Попробуй в DBGrid1.Options поставить dgMultiSelect := True. Может быть в этом проблема. И еще, убери процедуру BeforePrint, а вместо этого введи доп. поле, что-то типа "MySelect: boolean", в котором и ставь пометочку, если оно выделено в Grid'е. И перед печатью установи фильтр на таблицу "MySelect = True", после чего печатай. После печати фильтр убираешь.

Ответ отправлен: 03.12.2002, 09:39
Отправитель: Vadim



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (27)
Perl (7)
Delphi (18)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (13)
PHP (8)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (23)
"Железо" (29)
Поиск информации (15)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (16)
Юристу
Гражданское право (9)
Семейное право (3)
Трудовое право (5)
КоАП (3)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное