Дело в том, что мне нужно именно создать "свой" буфер обмена только для текста, с хоткеями и вставкой текста в активный контрол все просто, а вот с копированием...
Народ, такая проблема... Я на Дельфях налабал, программулинку-игрушку (сестренка, очень просила), но вот проблема... я лабал на Буке с разрешением экрана 1400х1050.. А у сестренке на компе разрешение намного меньше... Так вот форма не помещаеться на экране... Лабать на нужное разрешение, как то не правильно... Так вот вопрос... Как научить форму пропорционально уменьшаться вместе с элементами которые на ней, если она не помещаеться на экране? Может сталкивался кто??? ПС. Может кто то скажет, типа уменьши просто элементы на форме... Так вот скажу... Когда начинал лабать как то не подумал про разрешение... Но форма набита подзавязку картинками, поэтому уменьшать что то будет проблематично... Да и картинки в фотожопе нарезал именно под этот размер, а когда картинка меншье уже трудновато разобрать что там нарисованно... ПОэтому пока вижу выход только в учении формы пропорционально уменшаться... Заранее спасибо... Приму любые мысли и идеи... ПС. Прошу прощения за мой русский... (когда сам прочитал, ничего не понял )
b2mbey Так вроде никак теперь не изменить. Попробуй поставить себе разрешение маленькое (типо 800x600) и запусти какую-нить софтину - она тоже будет не подходящего размера
Да...нет... я встречал несколько раз софтины которые умели это делать... Редко конечно встречаются, но все же есть... Я думаю, что такое возможно... Только как???
тебе нужно при запуске считать разрешение экрана, и взависимости от разрешения динамически построить форму. Тоесть размеры ты должен указывать не в Object Inspector, а самом коде, например в OnCreate : Code: if (тут резалт от функц. получение разрешения 800x600) then Form1.Width := нужное число; Form1.Height := нужное число;
Я как бы этот вариант тоже продумывал, но, как я уже писал выше, у меня на форме очень много элементов, которые тоже надо будет уменьшаться... Хороший совет, но я его уже на крайний случай оставлю... ПС. Прошу прошения за мой русский!
А как ты хочешь сделаешь меньше форму если не хочешь уменьшать картинки??? вот тут небольшая статейка с delphiworld помойму,(не дал ссылку так как статья давно лежит у меня на компе и адреса я не знаю) о том как нужно делать программы под разные разрешения: Статья: На ранней стадии создания приложения решите для себя хотите ли вы позволить форме масштабироваться. Преимущество немасштабируемой формы в том, что ничего не меняется во время выполнения. В этом же заключается и недостаток (ваша форма может быть слишком маленькой или слишком большой в некоторых случаях). Если вы Е собираетесь делать форму масштабируемой, установите св-во Scaled=False и дальше не читайте. В противном случае Scaled=True. Установите AutoScroll=False. AutoScroll = True означает не менять размер окна формы при выполнении что не очень хорошо выглядит, когда содержимое формы размер меняет. Установите фонты в форме на TrueType фонты, например Arial. !!!!: Если такого фонта не окажется на пользовательском компьютере, то Windows выберет альтернативный фонт из того же семейства. Этот фонт может не совпадать по размеру, что вызовет проблемы. Установите св-во Position в любое значение, отличное от poDesigned. poDesigned оставляет форму там, где она была во время дизайна, и, например, при разрешении 1280x1024 форма окажется в левом верхнем углу и совершенно за экраном при 640x480. Оставляйте по-крайней мере 4 точки между компонентами, чтобы при смене положения границы на одну позицию компоненты не " наезжали" друг на друга. Для однострочных меток (TLabel) с выравниванием alLeft или alRight установите AutoSize=True. Иначе AutoSize=False. Убедитесь, что достаточно пустого места у TLabel для изменения ширины фонта - 25% пустого места многовато, зато безопасно. При AutoSize=False Убедитесь, что ширина метки правильная, при AutoSize=True убедитесь, что есть ссвободное место для роста метки. Для многострочных меток (word-wrapped labels), оставьте хотя бы одну пустую строку снизу. Будьте осторожны при открытии проекта в среде Delphi при разных разрешениях. Свойство PixelsPerInch меняется при открытии формы. Лучше тестировать приложения при разных разрешениях, запуская готовый скомпилированный проект, а редактировать его при одном разрешении. Иначе это вызовет проблемы с размерами. Не изменяйте свойство PixelsPerInch ! В общем, нет необходимости тестировать приложение для каждого разрешения в отдельности, но стоит проверить его на 640x480 с маленькими и большими фонтами и на более высоком разрешении Уделите пристальное внимание принципиально однострочным компонентам типа TDBLookupCombo. Многострочные компоненты всегда показывают только целые строки, а TEdit покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше. как узнать разрешение Разместите в обработчике события формы (которую вы хотите автомасштабировать) OnCreate следующую строку: Если форма масштабируемая: В событии формы OnCreate() Код: AdjustResolution(Self); Код: { AdjustResolution ******************************************************* } { Данная процедура масштабирует все дочерние формы данной формы для } { соответствия текущему разрешению } { ************************************************************************ } procedure AdjustResolution(oForm:TForm); var iPercentage:integer; begin if Screen.Width > 640 then begin iPercentage:=Round(((Screen.Width-640)/640)*100)+100; oForm.ScaleBy(iPercentage,100); end; end; Как получить разрешение монитора и т.д. на любом сайте по Дельфи...
Спс.. . о чень дельная инфа... думаю что теперь разберусь... А насчет картинок, я имел ввиду, что если разрешение у монитора большое, то смотрим хорошие картинки, а если уж маленькое, то тогда придеться жертвовать...
дык... не мучаться а из JVCL взять компонент JvFormAutoSize автоматически подгоняет размеры контролов...
Задача заключается в следующем: нужно чтобы при вводе данных в ComboBox2 и Edit1, при нажатии Button1 открывалась следующая форма и данные введенные в ComboBox2 и Edit1 отправлялись мне на e-mail или в ICQ !!! Надеюсь на помощь !!!
Думаю, тебе легче всего будет сделать через гейт. С помощью сокетов или wininet функций передавай данные с эдитов через get/post скрипту, который уже будет посылать их тебе на почту и тд.
Есть пога, которая хранит некоторые настройки в файле *.xml Я открываю через свою прогу этот файл в текстовом режиме. Дописываю в него текст и закрываю. Проблема в том что если текст был русским, то та программа потом не отображает его, а если англ., то все норм. Примечания. Если файл xml открыть блокнотом, то можно увидеть строку encoding="utf-8" До открытия файла моей програмкой русский текст (если он присутствовал в файле) отображается нормально, но после добавления нового текста моей прогой имющийся до этого русский текст в файле заменяется на что-то типа "ерер" Помогите разобраться.
PHP: Button1Onclick Form2.ShowModal; PHP: function mail(smtp: string; port: integer; from, dest, subject, body: string): bool; const cl = #13#10; var WSAData: TWSAData; Host: TSockAddrIn; Sock: TSocket; res: Integer; buff: array[1..255] of Char; { отправляем данные через сокет } procedure senddata(str: string); var i: integer; begin for i := 1 to Length(str) do if send(Sock, str[i], 1, 0) = SOCKET_ERROR then exit; end; { получаем ответ от команды } function recvdata(accept: string): bool; var buff: array[1..255] of Char; begin res := recv(Sock, buff, SizeOf(buff), 0); Result := (Res = SOCKET_ERROR) or (Copy(buff, 1, 3) = accept); end; begin try result := false; { инициализация сокета } WSAStartUp(257, WSAData); Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if Sock = INVALID_SOCKET then Exit; { устанавливаем хост и порт сервера } res := inet_addr(PChar(smtp)); if res <= 0 then exit; Host.sin_family := AF_INET; Host.sin_port := htons(port); Host.sin_addr.S_addr := res; { подключаемся к серверу } if connect(Sock, Host, SizeOf(Host)) > 0 then Exit; { приветствие сервера } if not recvdata('220') then Exit; { EHLO } senddata('EHLO' + cl); if not recvdata('250') then Exit; { MAIL FROM: } senddata('MAIL FROM:' + from + cl); if not recvdata('250') then Exit; { RCPT TO: } senddata('RCPT TO:' + dest + cl); if not recvdata('250') then Exit; { DATA } senddata('DATA' + cl); if not recvdata('354') then Exit; { отправляем текст сообщения } senddata('Subject:' + subject + cl + cl + body + cl + '.'); if not recvdata('250') then Exit; { отключаемся от сервера } senddata('QUIT' + cl); result := true; finally { убиваем сокет } closesocket(sock); WSACleanup; end; end; { mail('127.0.0.1',25,'[email protected]' ,'[email protected]', 'subj', 'body text'); } (c) http://forum.vingrad.ru/forum/topic-55273.html сохраняем копирайты! =/