[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Legion™

    Legion™ New Member

    Joined:
    8 May 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Дело в том, что мне нужно именно создать "свой" буфер обмена только для текста, с хоткеями и вставкой текста в активный контрол все просто, а вот с копированием...
     
  2. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Народ, такая проблема...
    Я на Дельфях налабал, программулинку-игрушку (сестренка, очень просила), но вот проблема... я лабал на Буке с разрешением экрана 1400х1050.. А у сестренке на компе разрешение намного меньше... Так вот форма не помещаеться на экране... Лабать на нужное разрешение, как то не правильно... Так вот вопрос... Как научить форму пропорционально уменьшаться вместе с элементами которые на ней, если она не помещаеться на экране? Может сталкивался кто???
    ПС. Может кто то скажет, типа уменьши просто элементы на форме... Так вот скажу... Когда начинал лабать как то не подумал про разрешение... Но форма набита подзавязку картинками, поэтому уменьшать что то будет проблематично... Да и картинки в фотожопе нарезал именно под этот размер, а когда картинка меншье уже трудновато разобрать что там нарисованно... ПОэтому пока вижу выход только в учении формы пропорционально уменшаться... Заранее спасибо... Приму любые мысли и идеи...

    ПС. Прошу прощения за мой русский... (когда сам прочитал, ничего не понял :D )
     
    #482 b2mbey, 16 Aug 2007
    Last edited: 16 Aug 2007
  3. FeraS

    FeraS Elder - Старейшина

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    b2mbey
    Так вроде никак теперь не изменить. Попробуй поставить себе разрешение маленькое (типо 800x600) и запусти какую-нить софтину - она тоже будет не подходящего размера
     
    3 people like this.
  4. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Да...нет... я встречал несколько раз софтины которые умели это делать... Редко конечно встречаются, но все же есть... Я думаю, что такое возможно... Только как???
     
  5. LEE_ROY

    LEE_ROY Elder - Старейшина

    Joined:
    9 Nov 2006
    Messages:
    450
    Likes Received:
    188
    Reputations:
    26
    тебе нужно при запуске считать разрешение экрана, и взависимости от разрешения динамически построить форму. Тоесть размеры ты должен указывать не в Object Inspector, а самом коде, например в OnCreate :
    Code:
    if (тут резалт от функц. получение разрешения 800x600) then
    Form1.Width := нужное число;
    Form1.Height := нужное число;
     
  6. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Я как бы этот вариант тоже продумывал, но, как я уже писал выше, у меня на форме очень много элементов, которые тоже надо будет уменьшаться...
    Хороший совет, но я его уже на крайний случай оставлю...

    ПС. Прошу прошения за мой русский!
     
  7. itsme

    itsme New Member

    Joined:
    14 Aug 2007
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    А как ты хочешь сделаешь меньше форму если не хочешь уменьшать картинки???

    вот тут небольшая статейка с 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;


    Как получить разрешение монитора и т.д. на любом сайте по Дельфи...
     
    1 person likes this.
  8. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Спс.. . о чень дельная инфа... думаю что теперь разберусь...
    А насчет картинок, я имел ввиду, что если разрешение у монитора большое, то смотрим хорошие картинки, а если уж маленькое, то тогда придеться жертвовать...
     
    #488 b2mbey, 16 Aug 2007
    Last edited: 16 Aug 2007
  9. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    дык... не мучаться а из JVCL взять компонент JvFormAutoSize
    автоматически подгоняет размеры контролов...
     
  10. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    А где взять этот JVCL???
     
  11. NetMan

    NetMan Elder - Старейшина

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
  12. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    хек еще и тут:

    http://jvcl.sourceforge.net/
     
    1 person likes this.
  13. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Огромное спасибо, дельный набор компонент!!!
     
  14. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    ShowWindow(Application.Handle, SW_HIDE);
    делаешь при событие у формы OnActivate
    убрать из Панели...
     
  15. infernal-team

    infernal-team Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    53
    Likes Received:
    17
    Reputations:
    -10
    Задача заключается в следующем: нужно чтобы при вводе данных в ComboBox2 и Edit1, при нажатии Button1 открывалась следующая форма и данные введенные в ComboBox2 и Edit1 отправлялись мне на e-mail или в ICQ !!! Надеюсь на помощь !!!
     
  16. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Думаю, тебе легче всего будет сделать через гейт. С помощью сокетов или wininet функций передавай данные с эдитов через get/post скрипту, который уже будет посылать их тебе на почту и тд.
     
  17. fremax

    fremax New Member

    Joined:
    14 Feb 2007
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    Есть пога, которая хранит некоторые настройки в файле *.xml
    Я открываю через свою прогу этот файл в текстовом режиме. Дописываю в него текст и закрываю. Проблема в том что если текст был русским, то та программа потом не отображает его, а если англ., то все норм.
    Примечания.
    Если файл xml открыть блокнотом, то можно увидеть строку encoding="utf-8"
    До открытия файла моей програмкой русский текст (если он присутствовал в файле) отображается нормально, но после добавления нового текста моей прогой имющийся до этого русский текст в файле заменяется на что-то типа "ерер"
    Помогите разобраться.
     
  18. infernal-team

    infernal-team Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    53
    Likes Received:
    17
    Reputations:
    -10
    Не ужели мне некто не может помочь?!
     
  19. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    PHP:
    Button1Onclick
    Form2
    .ShowModal;
    PHP:
    function mail(smtpstringportintegerfromdestsubject,
      
    bodystring): bool;
    const
      
    cl #13#10;
    var
    WSADataTWSAData;
      
    HostTSockAddrIn;
      
    SockTSocket;
      
    resInteger;
      
    buff: array[1..255of Char;

      { 
    отправляем данные через сокет }
      
    procedure senddata(strstring);
      var
        
    iinteger;
      
    begin
        
    for := 1 to Length(str) do
          if 
    send(Sockstr[i], 10) = SOCKET_ERROR then
            
    exit;
      
    end;

      { 
    получаем ответ от команды }
      function 
    recvdata(acceptstring): bool;
      var
        
    buff: array[1..255of Char;
      
    begin
        res 
    := recv(SockbuffSizeOf(buff), 0);
        
    Result := (Res SOCKET_ERROR) or (Copy(buff13) = accept);
      
    end;

    begin
      
    try
        
    result := false;
        { 
    инициализация сокета }
        
    WSAStartUp(257WSAData);
        
    Sock := socket(AF_INETSOCK_STREAMIPPROTO_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(SockHostSizeOf(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
    сохраняем копирайты! =/
     
  20. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    AnsiToUtf8()
     
Thread Status:
Not open for further replies.