Страница 1 из 5

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

СообщениеДобавлено: 15.02.2011 21:12:51
dangreen
Задача следующая:
Нужно в смоей программе использовать другую
либо запускать другую и скрывать ее окно (как это сделать, а точнее скрывать окно)
либо как вставить в проект лазаруса код на си (в лазаре есть только сипп)
помогите пожалусто :mrgreen:

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

СообщениеДобавлено: 15.02.2011 22:43:07
daesher
Запускать и скрывать окно - зависит от ОС. Например, в Windows в функции WinExec (пусть она и устарела) есть параметр показа окна. Можно (и нужно) попробовать через кросс-платформенный TProcess.

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

СообщениеДобавлено: 15.02.2011 22:51:18
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, и использовать библиотеку через обёртку в своей программе.

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

СообщениеДобавлено: 16.02.2011 04:49:24
dangreen
Спасибо! щяс все читать буду :mrgreen:

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

СообщениеДобавлено: 22.02.2011 17:42:09
dangreen
терь задача такая, по нажатию правой кнопки мыши и некоторых условиях симулировать нажатие левой кнопки
как симулировать нажатие левой кнопки?

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

СообщениеДобавлено: 22.02.2011 20:30:20
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), там могут быть подводные камни касающиеся кросплатформенности...
Удачи.

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

СообщениеДобавлено: 22.02.2011 20:44:17
dangreen
мне не на кнопку нада, а на элементы тривью
чтоб по нажатию правой кнопки и элемент выделялся и попап появлялся

Добавлено спустя 19 минут 31 секунду:
наткнулся на вики на
PostMessage(FTree.Handle,WM_LBUTTONUP, MK_LBUTTON, 0);
и юзесы к нему (наверное) messages, windows, StdCtrls;
в лазаре нет windows и StdCtrls

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

СообщениеДобавлено: 22.02.2011 21:11:50
hinst
если вам надо заменять щелчки не только в своей программе, но во всей системе, то это средства операционной системы надо использовать, кроссплатформенного решения не предполагается
:idea: в лазаре нет windows и StdCtrls с чего вы взяли?

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

СообщениеДобавлено: 22.02.2011 21:29:03
dangreen
нужно чтоб работало только в моей программе
сори StdCtrls есть в лазаре
а windows http://puu.sh/11z1

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

СообщениеДобавлено: 22.02.2011 21:32:30
hinst
модуль Windows есть в лазарусе для Windows :mrgreen:

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

СообщениеДобавлено: 22.02.2011 21:52:31
dangreen
пофиг
как мне справиться с поставленной задачей? не отходите от темы :mrgreen:

Добавлено спустя 1 минуту 13 секунд:
на PostMessage(FTree.Handle,WM_LBUTTONUP, MK_LBUTTON, 0); ругается

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

СообщениеДобавлено: 22.02.2011 23:27:24
Maxizar
dangreen писал(а):мне не на кнопку нада, а на элементы тривью
чтоб по нажатию правой кнопки и элемент выделялся и попап появлялся

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

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

СообщениеДобавлено: 23.02.2011 05:17:49
dangreen
ути какие капризульки нашлись
нафиг от таких помощь не нужна

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

СообщениеДобавлено: 23.02.2011 05:24:16
Иван Шихалев
На личности не переходим, да?

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

СообщениеДобавлено: 23.02.2011 05:29:40
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;