Помогите справиться с задачей

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Помогите справиться с задачей

Сообщение dangreen »

Задача следующая:
Нужно в смоей программе использовать другую
либо запускать другую и скрывать ее окно (как это сделать, а точнее скрывать окно)
либо как вставить в проект лазаруса код на си (в лазаре есть только сипп)
помогите пожалусто :mrgreen:
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

Сообщение daesher »

Запускать и скрывать окно - зависит от ОС. Например, в Windows в функции WinExec (пусть она и устарела) есть параметр показа окна. Можно (и нужно) попробовать через кросс-платформенный TProcess.
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

dangreen писал(а):Нужно в смоей программе использовать другую
либо запускать другую и скрывать ее окно (как это сделать, а точнее скрывать окно)

TProcess
http://wiki.lazarus.freepascal.org/Exec ... rograms/ru
плюс property ShowWindow: TShowWindowOptions;
http://lazarus-ccr.sourceforge.net/docs ... ocess.html
http://lazarus-ccr.sourceforge.net/docs ... tions.html
dangreen писал(а):либо как вставить в проект лазаруса код на си (в лазаре есть только сипп)

Как обычно, Правка - Вставить. На подсветку синтаксиса не обращайте внимания, от C++ вполне подойдёт. Другое дело, что работать этот код всё равно не будет. Чтобы код на C работал, его нужно пропустить через компилятор C, а Lazarus таковым не является.
Чтобы использовать код на C в программе на Pascal, можно:
1. скомпилировать этот код в отдельную программу и запускать через TProcess, либо
2. скомпилировать его в динамическую библиотеку (dll/so), написать обёртку к ней на Pascal, и использовать библиотеку через обёртку в своей программе.
Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Сообщение dangreen »

Спасибо! щяс все читать буду :mrgreen:
Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Сообщение dangreen »

терь задача такая, по нажатию правой кнопки мыши и некоторых условиях симулировать нажатие левой кнопки
как симулировать нажатие левой кнопки?
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

Простое решение: это вызвать метод Click там где это нужно(при нажатии правой кнопки мыши) и у того кого нужно, скажем у кнопки.
Пример:
Форма + кнопка, при нажатии выход из проги. Так же есть событие перехвата нажатия кнопки мыши(правой) при ее нажатии вызываем Метод кнопки Click (эмулируем нажатие по ней) Хотя нажали правую и на форме:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  If Button=mbRight then
     Button1.Click;
end;


Сложный метод: Читаем и разбираемся с системой сообщений (TMessage), там могут быть подводные камни касающиеся кросплатформенности...
Удачи.
Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Сообщение dangreen »

мне не на кнопку нада, а на элементы тривью
чтоб по нажатию правой кнопки и элемент выделялся и попап появлялся

Добавлено спустя 19 минут 31 секунду:
наткнулся на вики на
PostMessage(FTree.Handle,WM_LBUTTONUP, MK_LBUTTON, 0);
и юзесы к нему (наверное) messages, windows, StdCtrls;
в лазаре нет windows и StdCtrls
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

если вам надо заменять щелчки не только в своей программе, но во всей системе, то это средства операционной системы надо использовать, кроссплатформенного решения не предполагается
:idea: в лазаре нет windows и StdCtrls с чего вы взяли?
Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Сообщение dangreen »

нужно чтоб работало только в моей программе
сори StdCtrls есть в лазаре
а windows http://puu.sh/11z1
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

модуль Windows есть в лазарусе для Windows :mrgreen:
Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Сообщение dangreen »

пофиг
как мне справиться с поставленной задачей? не отходите от темы :mrgreen:

Добавлено спустя 1 минуту 13 секунд:
на PostMessage(FTree.Handle,WM_LBUTTONUP, MK_LBUTTON, 0); ругается
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

dangreen писал(а):мне не на кнопку нада, а на элементы тривью
чтоб по нажатию правой кнопки и элемент выделялся и попап появлялся

А можно без тривью и попап... (Я хоть Вас и понял), но отпало желание отвечать...
Есть общепринятые сокращения типа IMHO (можно писать ИМХО) Постскриптум
PS, не очень приятно когда пишут ЗЫ. Bug – Жук (жучек) БАГ = Ошибка. И.т.п. А вот попап не знаю…
Так что привидите код, напишите по русски что нужно. Почему нет Windows - значит либо криво встал Lazarus либо ОС не Windows. Поэтому поставте вопрос правильно, подробно, с кодом, с описанием задачи, ОС, и т.п.
Иначе мой ответ RTFM.
Это ведь нужно Вам, мы лишь пытаемся помочь, если есть желание, но когда вопрос ставят в такой манере, отвечать не хочется. Я просто не телепат и ТВ программы аля битва экстрасенцев меня реально …. извините там мат.
Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Сообщение dangreen »

ути какие капризульки нашлись
нафиг от таких помощь не нужна
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

На личности не переходим, да?
Аватара пользователя
dangreen
новенький
Сообщения: 72
Зарегистрирован: 21.11.2010 19:55:49

Сообщение dangreen »

я по-китайски поисал чтобы он просил меня написать вопрос заново?

пишу для особенных(никаких личностей)
при нажатии на элемент TreeView правой кнопкой,нужно чтобы и элемент выделялся и PopUp появлялся
Почему нет Windows

потому что Mac
подробно, с кодом

Код: Выделить всё

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if Button = mbRight then
   begin
     ????????????????????????????
   end;
end;         
Ответить