На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> ClientToScreen в Lazarus под Linux , Координата по вертикали (Y) становится правильной только после нажати кнопки в Showmessage
    Задача: запустить mpv без рамки строго по координатам панели формы.
    Form.top не катит, потому что в линуксах top формы считается вместе с заголовком, а у mpv - исключительно самого окна.
    Поэтому мне нужно выцепить экранные координаты внутренней части формы (расположил на форме TPanel с выравниванием AlClient)
    В общем, вот что получилось:

    ExpandedWrap disabled
      procedure TForm1.SpeedButton1Click(Sender: TObject);
      var aPoint:Tpoint;
        x,y,w,h:integer;
        Process:TProcess;
      begin
        showmessage(inttostr(y));
        aPoint.x := 0;
        aPoint.y := 0;
        aPoint := form2.panel1.ClientToScreen(aPoint);
        x:=aPoint.X;
        y:=aPoint.Y;
        h:=form2.panel1.Height;
        w:=round(h*1.77777779);
        Process:=Tprocess.create(nil);
        Process.commandline:='mpv --pause --geometry='+inttostr(w)+'x'+inttostr(h)+'+'+
        inttostr(x)+'+'+inttostr(y)+' --keep-open=yes "имя_файла_.mp4" --input-ipc-server=/tmp/mpvsocket';
        Process.Execute;
      end;


    Если в коде присутствует showmessage, то после нажатия на его кнопку все отображается правильно -top mpv совпадает с top формы.
    Если же showmessage отсутствует, top mpv выше на высоту заголовка. При этом если запустить процесс повторно (убив запущенный mpv или оставив его работать) - окно mpv открывается в нужных координатах.

    Что делать - честно, не знаю. может кто-нибудь скажет чего умного?

    Заранее блаагодарен,
    Дмитрий.
    Сообщение отредактировано: volvo877 -
      см WinAPI
        Цитата GSM_Roamer @
        Что делать - честно, не знаю. может кто-нибудь скажет чего умного?

        1) ShowMessage показывает явную лажу т.к. y в нем не инициализирован
        2) Стоит уточнить ваш Windows Manager. В разных менеджерах поведение окон отличается. У меня вот mpv запускается постоянно в рандомных местах и игнорирует --geometry, хотя координаты вычисляются правильно.
        Прикреплённый файлПрикреплённый файлScreenshot_20230721_174526.png (128,23 Кбайт, скачиваний: 38)
        3) Думаю вот это вам поможет
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0195 ]   [ 17 queries used ]   [ Generated: 29.03.24, 08:59 GMT ]