RusFAQ.ru: Программирование на Delphi
Информационный Канал Subscribe.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 |
© 2001-2005, Портал RusFAQ.ru, Россия, Москва. Идея, дизайн, программирование: Калашников О.А. Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31 Авторские права | Реклама на портале |
|
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus Архив рассылки |
Отписаться
Вспомнить пароль |
В избранное | ||