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

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


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

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

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

Выпуск № 312
от 02.12.2005, 15:48

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


Вопрос № 30266: Привет! У меня такая вот задача - надо узнать что написано на окне сообщения в другом приложение. Например в результате каких-то действий из моего приложения, чужая прога делает showmessage('all done!');, вот моей проге нуна узнать что там именно &qu...
Вопрос № 30273: Здравствуйте уважаемые эксперты! Мення зовут Dredd. У меня такой вопрос: создаю приложение на компе А (всё нормально,всё О.К). Переношу его на комп В ( OS&Config A = OS&Config B). Переношу папку со всем проектом полностью. Кирилица в коде - б...
Вопрос № 30278: Добрый вечер, уважаемые эксперты. Есть текстовый файл со строками. Как узнать количество строк в файле? Эта информация необходима для отображения процесса загрузки этого файла в базу данных. Нужно отображать какой % уже загружено. Файл большо...
Вопрос № 30282: Здраствуйте, подскажите пожалуйста пример SQL-запроса для добавления двух столбцов текстового типа в существующую таблицу в БД Access 2000. Используется технолгия доступа к данным ADO. Пишу в Delphi. И еще может как то можно из Delphi изменить с...
Вопрос № 30284: Здравствуйте, ув. эксперты! Скажите пожалуйста, как в приложение добавить поддержку плюгинов (напр. плюгинов Winamp-а)....
Вопрос № 30285: Здраствуйте,всегда выручающие эксперты! У меня опять вопросы: 1)Есть программа "Загрузчик"-она просто собирает информацию с ini файлов,баз данных,устанавливает соединение с сервером, после чего должна обратится к написанной мною биб...
Вопрос № 30288: Если модем не включить и загрузить Windows, то модем не определится. Чтобы он определился нужно включить модем и обновить конфигурацию оборудования в диспетчере устройств. Подскажите, пажалуйста, функцию для реализации обновления конфигураци...
Вопрос № 30289: И это опять я!!! Как я понял модуль shareMem позволяет узнать содержание переменной одного моего приложения,другой переменной другого моего приложения?! Так или не так? И как это сделать?! А также как проследить за изменением переменной,без тайме...
Вопрос № 30291: Доброго времени суток!!! У меня к вам вопрос. Как с помощью Delphi 7 перевести формат PDF в формат DOC и обратно??? Прошу вас написать пример перевода. Зарание всем ответившим большое спасибо!!! С Уважением, Ujin An...
Вопрос № 30303: Здравствуйте, уважаемые эксперты. Подскажите,что делать, чтобы размер шрифта в программе не менялся на машинах с разными настройками операционной системы. (К примеру, размер текста выводимый программой на компоненте Tlabel на разных машинах отличаетс...
Вопрос № 30315: Всем привет! Как сделать эффект для всего экрана, который появляется при открытии окна "Завершение работы" в Windows XP? Эффект: экран затемняется и одновременно становится чёрно-белым. При этом это происходит не резко, а плавно. Могу у...

Вопрос № 30.266
Привет! У меня такая вот задача - надо узнать что написано на окне сообщения в другом приложение. Например в результате каких-то действий из моего приложения, чужая прога делает showmessage('all done!');, вот моей проге нуна узнать что там именно "all done!" а не чето другое... Спасибо!
Отправлен: 26.11.2005, 15:54
Вопрос задал: FishMD (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: LanK
Здравствуйте, FishMD!

Для этого Вам надо знать что за окно. Можно воспользоваться, например прогой SPYXX.EXE

или если ищите _чисто_ caption окна... смотрите приложение.

Приложение:

---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!

Ответ отправил: LanK (статус: 3-ий класс)
Отправлен: 28.11.2005, 10:15


Вопрос № 30.273
Здравствуйте уважаемые эксперты! Мення зовут Dredd.
У меня такой вопрос: создаю приложение на компе А (всё нормально,всё О.К).
Переношу его на комп В ( OS&Config A = OS&Config B). Переношу папку со всем проектом полностью. Кирилица в коде - б/з, а вот caption всех элементов формы превращается в крякобрязы. Подскожите плз, что бы это могло быть?
Отправлен: 26.11.2005, 18:35
Вопрос задал: Dred (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Маренич Владимир
Здравствуйте, Dred!
Я бы всё-таки проверил OS&Config A и OS&Config B
В первую очередь настройку тем, потом кодовую страницу по умолчанию.
Очень может быть, что MS Sens Serif у них разный или кодировка (CHARSET) в настройках винды. Если бы Вы уточнили какая винда установлена, то было бы проще искать разумный ответ на Ваш вопрос.
Ответ отправил: Маренич Владимир (статус: 7-ой класс)
Отправлен: 26.11.2005, 19:05
Оценка за ответ: 4
Комментарий оценки:
Если можно ещё раз с учётом следующего:
A = B = Windows XP (Rus-original) SP2 Build 5.1.2600

Отвечает: Warrior
Здравствуйте, Dred!
Жаль, что у меня англ версия виндузы.
Я всетаки сделаю акцент на том, что (OS&Config A <> OS&Config B) имею ввиду ставились они отдельно и настраивались отдельно.
Один раз я наткнулся на такую штуку. Точно такие же симптомы были.
Следуй за моими подсказками и проверь:

Control Panel (Панель управления)
Regional and Language Options (Языки и стандарты)
Advanced

Select a language to match the language version of the non-Unicode programs you want to use: (Типа выберите тип кодировки для ваших программ).

И вот тут смотри хорошо - если тот, что ставил виндузу спешил - мог вместо Русского языка поставить Румынский (они рядом стоят).

Думаю, что помог :)


Ответ отправил: Warrior (статус: 2-ой класс)
Отправлен: 26.11.2005, 19:08
Оценка за ответ: 4
Комментарий оценки:
Эту фишку я знаю. У меня A = B = 'Русский'
Но всё-равно тхенкс!

Отвечает: sir henry
Здравствуйте, Dred!
Видимо на втором кмпе отсутствует шрифт, который используется в Caption. Проверьте, потому что ситема вместо отсутствующего может подставить любой, в том числе и с кракозябрами. Если название шрифта есть там, то проверьте, содержит ли он кирилицу.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 06:49
Оценка за ответ: 4
Комментарий оценки:
A = B= MS Sans Serif (Default for all new *.dpr)
Хм!?

Отвечает: Vadim Vitomsky
Здравствуйте, Dred!
Скорее всего, проблема либо с установлеными шрифтами, либо с региональными настройками.
В первом случае необходимо проверить, установлен ли шрифт, которым выводиться надпись в Caption на обеих компах, а во втором - проверить в Панели управления региональные настройки.
Ответ отправил: Vadim Vitomsky (статус: 3-ий класс)
Отправлен: 28.11.2005, 14:31
Оценка за ответ: 5
Комментарий оценки:
Так оно и есть. Дело оказалось не в шрифтах, а в региональных настройках.
Разница была вроде несущественная, но после абсолютной синхронизации трабл умер.
Всем большое спасибо!

Отвечает: Vbhjndjhtw
Здравствуйте, Dred!
Надо выставить шрифты в твоей операционной системе. Какие именно, затрудняюсь ответить.
---------
Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 3-ий класс)
Отправлен: 29.11.2005, 08:22

Отвечает: Ataman N. N.
Здравствуйте, Dred!
У меня тоже была такая проблема. Все дело оказалось в настройках языков и региональных стандартах.
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 29.11.2005, 17:37
Оценка за ответ: 5
Комментарий оценки:
Так оно и есть. Дело оказалось не в шрифтах, а в региональных настройках.
Разница была вроде несущественная, но после абсолютной синхронизации трабл умер.
Всем большое спасибо!


Вопрос № 30.278
Добрый вечер, уважаемые эксперты.
Есть текстовый файл со строками. Как узнать количество строк в файле?
Эта информация необходима для отображения процесса загрузки этого файла в базу данных. Нужно отображать какой % уже загружено. Файл большой (300-800МБ). Если есть другие решения для отображения %, буду рад услышать. Спасибо.
Отправлен: 26.11.2005, 19:40
Вопрос задал: Vitava (статус: 4-ый класс)
Всего ответов: 9
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Vitava!
Кроме, как предварительно посчитать строки файла, иных методов в голову не приходит. Можно исходить из того, что строка 255 символо, но это не всегда правда. Можно считать сколько байт считано из тех, что нужно считать.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 26.11.2005, 19:51

Отвечает: Маренич Владимир
Здравствуйте, Vitava!
Для того чтобы узнать кол-во строк, придется считать весь файл и соотв. подсчитать сколько всего строк... Не самый лучший способ. В данном случае (когда нельзя сразу закатать весь файл в TStringList - там есть свойство Count) я бы делал счетчик не на кол-во строк, а на обработанный объем файла, т.е. <обработано>/<длина файла>*100% - это было бы безболезненно и более-менее информативно

Приложение:

Ответ отправил: Маренич Владимир (статус: 7-ой класс)
Отправлен: 26.11.2005, 20:00
Оценка за ответ: 5

Отвечает: Romodos
Здравствуйте, Vitava!
Дык, по-моему, лучше узнать размер файла и считать, сколько байт уже считано (1байт=1символ). И отображать кол-во считанных байт/размер файла*100%
PS. Размер файла в Delphi определяется function FileSize(var F): Integer;
Надеюсь, что помог.
---------
FAQ me off!
Ответ отправил: Romodos (статус: Студент)
Отправлен: 26.11.2005, 20:10
Оценка за ответ: 5

Отвечает: Архангельский Андрей Германович
Здравствуйте, Vitava!

Для того чтобы узнать размер файла, его нужно загрузить, а после загрузки индикатор процесса не нужен.
Можно пойти по другому пути:
1) спросить размер файла (у системы)
2) Установить сумму строк = 0
3) Загрузить строку и узнать ее размер к сумме строк
4) Вычислить отношение (сумма строк)/файл - отобразить его
5) перейти на пункт 3
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 26.11.2005, 20:12

Отвечает: REFERI
Здравствуйте, Vitava!
Можно (якобы) считывать что-то в каждой строке, пока не достигнут конец файла и при этом вести счетчик.
EOF - end of file.
В приложении полный код.
Счастливо!

Приложение:

---------
Не судите, да не судимы будете...

Ответ отправил: REFERI (статус: 9-ый класс)
Отправлен: 26.11.2005, 22:11

Отвечает: Denisss
Здравствуйте, Vitava!
Количество строк в файле определяется по количеству символов окончания строки (для Win1251 - это #10#13). Это количество нигде не записывается в файле. Т.к. чтобы узнать сколько строк, нужно прочесть весь файл, а это займет большое время, то проще сделать одно из следующих вариантов (эти варианты - первое, что пришло в голову, но можно и другие придумать):
1. Прочесть размер файла. Далее вести счетчик прочитанных символов и по этому счетчику считать проценты: 1 символ = 1 байт, 1 строка = (кол-во символов + 2) байт (2 байта - это символы окончания строки)
2. Максимальная длина строки - 256 символов (хотя могут быть и больше, но это уже реже), минимальная - 0 т.о., средняя длина строки - 128 символов. На этом основании можно предполагать, что средняя длина строки = 130 байт и считать аналогично предыдущему случаю. Можно взять менее 130 байт. Можете приблизительно Сами оценить среднюю длину строк в файлах, которые будут загружаться в базу и взять еще на 10-20 меньше (уж лучше, чтобы прогресс никогда не доходил до 100%, нежели, чтобы он доходил до 100%, а пользователю приходилось еще несколько мин. ждать).
Второй случай менее точный, но он позволяет несколько сократить расчеты и этим уменьшить время обработки файла.

Удачи!
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 26.11.2005, 23:33

Отвечает: sir henry
Здравствуйте, Vitava!
Количество строк можно узнать, только перебрав их все. :)
Var
f: TextFile;
s: string;
kol: integer;
Begin
kol:=0;
AssignFile(f, 'Ваш_файл.txt');
Reset;
While not Eof(f) Do
Begin
ReadLn(f, s);
Inc(kol);
End;
CloseFile(f);
Ну а процент из кол-ва строк вывести легче легкого. :)
End;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 06:57

Отвечает: Schmak
Здравствуйте, Vitava!
Узнать количество строк можно только полностью прочитав файл. Но так как файл большой, то легче. я думаю, считать не количество строк, а кол-во символов.
1)Заводим переменную X, содержащую кол-во прочитанных строк.
2)Узнаём размер файла filesize(varf:file):integer;
3)Считываем строку
4)Добавляем к X кол-во символов в строке +2 (#13#10- конец строки)
5)Выводим отношение X/длина файла*100%
6) Если не конец файла переходим на пункт 3).


---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 27.11.2005, 11:19
Оценка за ответ: 5

Отвечает: Lector
Здравствуйте, Vitava!
Сделайте внешнюю переменную, в который будет сохраняться средняя длина строки. Тогда количество строк = размер/среднюю длину. Только при первом запуске её надо проинициализировать. Точная цифра при больших значениях ведь не важна. А при многократном запуске с разными файлами резудьтат будет близок к реальному. :-)
---------
Хочешь помочь старику - сделай вместо него.
Хочешь помочь новичку - сделай вместе с ним.
Хочешь помочь мастеру - отойди и не мешай,
а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: Студент)
Отправлен: 29.11.2005, 15:29


Вопрос № 30.282
Здраствуйте, подскажите пожалуйста пример SQL-запроса для добавления двух столбцов текстового типа в существующую таблицу в БД Access 2000. Используется технолгия доступа к данным ADO. Пишу в Delphi.
И еще может как то можно из Delphi изменить свойства поля - "пустые строки" в БД Access 2000.
Отправлен: 26.11.2005, 20:09
Вопрос задал: Захаров Дмитрий Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, Захаров Дмитрий Александрович!
Добавить:
ALTER TABLE Tablica ADD New_Column1 Тип(Величина), New_Column2 Тип(Величина)
Изменить просто так скорее всего нельзя. По крайней мере учебники советуют создать временный столбец с о всеми необходимыми свойствами, перенести туда данные, удалить старый столбец, затем создать новый столбец с нужным именем и скопировать данные из временного, потом временный удалить.
Но, в принципе, можете попробовать и использовать:
ALTER TABLE Tablica ALTER COLUMN Название_столбца со всеми необходимыми характеристиками, но делать это по живым данным крайне не рекоммендуется, нкжно сначала их скопировать куда-нибудь (во временный столбец, например). Вам же спокойнее будет. :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 07:15
Оценка за ответ: 4
Комментарий оценки:
А какой тип написать? Чтобы в Access добавилось текстовое поле. У меня на все типы Delphi ругается. А сам синтаксис добавления стобца я знаю.


Вопрос № 30.284
Здравствуйте, ув. эксперты!
Скажите пожалуйста, как в приложение добавить поддержку плюгинов
(напр. плюгинов Winamp-а).
Отправлен: 26.11.2005, 20:51
Вопрос задал: Vic (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: REFERI
Здравствуйте, Vic!
Это не так просто. Взять и добавить в свою программу плагины от Winamp-а.
Вы когда-нибудь писали программу, которая поддерживала бы плагины, т.е. которую можно безболезненно расширять функционально, не переписывая код самой программы? Наверняка нет. Тогда вперед! В приложении приведена (хотел привести но выскочило сообщение о слишком большом обЪеме! Пишите ваш адрес - вышлю) статейка об этом. Кстати это очень переспективное направление в программировании. Сам собираюсь заняться!
Удачи!
---------
Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: 9-ый класс)
Отправлен: 26.11.2005, 22:13

Отвечает: Denisss
Здравствуйте, Vic!
Т.к. на такой вопрос двумя словами не ответишь, то просто кину Вам ссылки, а Вы уже далее сможете задавать конкретные вопросы по созданию плагинов для WinAMP.
http://www.torry.net/samples/samples/plugins/gwinamp.zip - пример создания плагина визуализации к WinAMP
http://www.torry.net/vcl/mmedia/other/winamppl.zip - компонент, позволяющий внедрить управление WinAMP в Вашу программу (может пригодиться при создании плагинов, управляющих WinAMP)
http://www.torry.net/vcl/mmedia/other/istwacomp.zip, http://www.torry.net/vcl/mmedia/other/jbtwactrl.zip - еще парочка таких же компонентов
http://www.torry.net/samples/samples/plugins/vis_dens.zip - еще один пример плагина визуализации
http://www.torry.net/vcl/vcltools/plugins/gpfwinamp.zip - набор компонентов и специальный билдер для создания плагинов к WinAMP
http://www.torry.net/samples/samples/plugins/winamp_plugin.zip - пример использования плагинов WinAMP.
http://www.torry.net/vcl/mmedia/other/wagppdll.zip - пример плагина "общего назначения"

Надеюсь, этого Вам будет достаточно (на первое время) :)

Удачи!
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 26.11.2005, 23:06

Отвечает: sir henry
Здравствуйте, Vic!
Путем включения какого-нибудь плюгинного компонента:
http://www.torry.net/quicksearchd.php?String=plug-in&Title=Yes
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 07:23


Вопрос № 30.285
Здраствуйте,всегда выручающие эксперты!
У меня опять вопросы:
1)Есть программа "Загрузчик"-она просто собирает информацию с ini файлов,баз данных,устанавливает соединение с сервером, после чего должна обратится к написанной мною библиотеке,чтобы создать описанную там форму!Тоесть форма хранится в библиотеке(функция создания и все её параметры)! Вопрос такой как написать функцию создания формы,тоесть что-то вроде(Приложение)!
2)Как автоматически обрашаться к базе банных paradox с логином и паролем?! Локальная и удалённая БД!
3)Как и где хранить пароли и логины,чтоб их нельзя было просто так прочитать! Если криптография-то что и как! Виды типы знаю,но ниразу не использовал в Delphi?!

Приложение:

Отправлен: 26.11.2005, 20:59
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, chikanok!
1) Вот здесь краткое пособие по созданию DLL, в том числе и с формой внутри:
http://www.podgoretsky.com/ftp/Docs/Delphi/D3/D3ProgLib/ch_02.htm
А если вобщем, то Вы сначала создаете обычный модуль с формой, проверяете его в работе, а потом уже переименовываете в library и вызываете его функции в основной программе.
2) В ADO, в строке соединения прописать их и все.
3) Если Вас волнует больше вопрос безопасности, чем хранения, то нигде их нельзя хранить, кроме как в голове. Это азбучная истина. Любой файл можно украсть, любой алгоритм шифрования можно взломать, вопрос только в целесообразности этого взлома.
Если же Вас беспокоит только вопрос хранения с защитой от дураков, то простое шифрование с применением XOR или простой зеркальной подстановкой Вам поможет. А где, это совершенно без разницы, можете их, например, в реестре хранить.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 07:39


Вопрос № 30.288
Если модем не включить и загрузить Windows, то модем не определится. Чтобы он определился нужно
включить модем и обновить конфигурацию оборудования в диспетчере устройств. Подскажите, пажалуйста,
функцию для реализации обновления конфигурации оборудования.
Отправлен: 26.11.2005, 21:41
Вопрос задал: REFERI (статус: 9-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vbhjndjhtw
Здравствуйте, REFERI!
Могу выслать компонент Модем TComm.
---------
Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 3-ий класс)
Отправлен: 29.11.2005, 08:16


Вопрос № 30.289
И это опять я!!!
Как я понял модуль shareMem позволяет узнать содержание переменной одного моего приложения,другой переменной другого моего приложения?! Так или не так? И как это сделать?! А также как проследить за изменением переменной,без таймера,и определённых событий ?!
А также как форму при динамическом создании привязать к определённому юниту! Тоесть есть юнит написанный для формы,но сама форма создаётся динамически из библиотеки?!(ксатит как это сделать я уже понял)!!!
Отправлен: 26.11.2005, 22:11
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: REFERI
Здравствуйте, chikanok!
Может быть, вам будет полезна статья о написании плагинов? Т.е. чтобы что-то можно было просто подключать к вашей программе.
По внутренней почте я отправил вам эту статью.

---------
Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: 9-ый класс)
Отправлен: 26.11.2005, 22:25

Отвечает: sir henry
Здравствуйте, chikanok!
1. Про sharemem Вас кто-то неверно проинформировал. Вы в хелп заглядывали? Загляните, узнаете много интересного по этому модулю. :)
2. Что значит "привязать"? Если Вы вызываете функции DLL из какого-то юнита, то вызываете. Все зависит от объявленой Вами переменной. Если объявили ее в функции, то эта переменная действительна только в пределах этой функции. Если объявили ее глобально, в начале юнита, то она действительна по всему юниту и т.п.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 07:49


Вопрос № 30.291
Доброго времени суток!!!

У меня к вам вопрос.
Как с помощью Delphi 7 перевести формат PDF в формат DOC и обратно??? Прошу вас написать пример перевода.

Зарание всем ответившим большое спасибо!!!

С Уважением,
Ujin Antikvar!!!
Отправлен: 26.11.2005, 23:03
Вопрос задал: Ujin Antikvar (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Ujin Antikvar!
Абсолютно никак. Максимум что можно сделать - создать DDFину из какого-нибудь текстового файла или вроде того, такие модули я видел, а вот чтобы сразу туда, а потом еще и обратно - нельзя.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 07:52

Отвечает: Ataman N. N.
Здравствуйте, Ujin Antikvar!
Такое возможно только при помощи Fine Reader'а или другой подобной программы.
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 28.11.2005, 18:37


Вопрос № 30.303
Здравствуйте, уважаемые эксперты. Подскажите,что делать, чтобы размер шрифта в программе не менялся на машинах с разными настройками операционной системы. (К примеру, размер текста выводимый программой на компоненте Tlabel на разных машинах отличается,хотя я жестко задаю свойство Tfont.Size). Может книжка или статья есть как правильно это делать?
Отправлен: 27.11.2005, 09:25
Вопрос задал: Shmel (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Shmel!
Дык а разрешение экрана какое на разных машинах??? Можно, конечно, продолжать фонт масштабировать, но на размеры объектов это влиять не будет.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 27.11.2005, 10:29

Отвечает: Архангельский Андрей Германович
Здравствуйте, Shmel!

Это невозможно.
1) Если в настройке системы сказано использовать крупный шрифт, то весь шрифт пересчитывается по новому разрешению экрана, независимо от того какой шрифт указан в программе. При этом размеры окон НЕ ПЕРЕСЧИТЫВАЮТСЯ. В результате очень часто текст не влезает в окно или TLabel. Выход - можно отслеживать эту установку и самому пересчитывать размеры элементов формы.
2) Настройках может быть указана подстановка шрифта - тогда и шрифт будет выгладеть по другому
Единственный способ в программе отслеживать параметры текущего шрифта и расчитавать все остальные размеры динамически.
3) И, наконец, цветовая гамма может меняться пользователем и внешний вид программы меняется до неузнаваемости
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 27.11.2005, 10:36

Отвечает: sir henry
Здравствуйте, Shmel!
Это зависит от настроек. Если на одной машине стоит масштаб шрифта 96 точек на дюйм, а на другой 125 точек на дюйм или для примера на одной машине разрешение экрана 1024х768, а на другой 800х600, то чего же Вы хотите? :) Надо тестировать программу в разных режимах, чтобы потом не было стыдно перед заказчиком.
Кясните себе для начала, в чем разница в "настройках операционной системы" на машинах, где шрифт разный, хотя у Вас стоит одинаковый.
Можете попробовать задавать размер шрифта не в свойстве Size, которое отображает размер в точках, а в свойстве Height, которое отображаеь размер в пикселях.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 13:43

Отвечает: Boriss
Здравствуйте, Shmel!
Видимо, лучше всего в начале работы анализировать разрешение экрана с помощью Screen - и на основании этого МЕНЯТЬ СВОЙ РАЗМЕР
(Screen.Height, Screen.Width). И это разумно, может пользователь НЕ ХОЧЕТ мелких буковок .... :))
Кстати, с его же помощью можно узнать установлен ли шрифт, который Вы используете - это тоже бывает проблемой (Screen.Fonts)
---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 28.11.2005, 11:45

Отвечает: Vbhjndjhtw
Здравствуйте, Shmel!
В свойствах(Object Inspector->Properties) Tlabel выбираете опцию Font, в ней и выбираете нужные Вам шрифты.
P.S.Хотелось бы конечно поконкретней знать , что у Вас за программа.
---------
Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 3-ий класс)
Отправлен: 29.11.2005, 08:11


Вопрос № 30.315
Всем привет!
Как сделать эффект для всего экрана, который появляется при открытии окна "Завершение работы" в Windows XP? Эффект: экран затемняется и одновременно становится чёрно-белым. При этом это происходит не резко, а плавно. Могу упростить вопрос: как сделать такой эффект хотя бы для картинки (а не для всего экрана)?
Отправлен: 27.11.2005, 15:30
Вопрос задал: Ерёмин Андрей (статус: Специалист)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Татьяна
Здравствуйте, Ерёмин Андрей!
Ну насколько я понимаю, каждая точка имеет свой цвет вида RGB(x,y,z), для того, чтобы получить оттенки серого, нужно точку заменить на RGB(p,p,p), где p можно вычислить например так
p = 0.299*z + 0.587*y + 0.114*x;
для того, чтобы создать эффект подобно тому, о котором вы говорите, можно например каждому компоненту цвета постепенно переходить от исходного к p (напр. в цикле как-нибудь пропорционально)
учитывая ваш статус и уровень, думаю будет лишним объяснять, как получить и установить точку.
Желаю удачи :)
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 8-ой класс)
Отправлен: 27.11.2005, 15:48
Оценка за ответ: 5
Комментарий оценки:
Спасибо за алгоритм!

Отвечает: sir henry
Здравствуйте, Ерёмин Андрей!
Уже был вопрос по преобразованию цветной картинки в черно-белую, поищите в рассылке. А яркость можно уменьшать постепенно, уменьшая яркость точки.
For i:=200 downto 100 do
y:=RGB(i,i,i);
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.11.2005, 20:21
Оценка за ответ: 4


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

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

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

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

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


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


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное