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

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

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

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

Сообщение dangreen » 15.02.2011 21:12:51

Задача следующая:
Нужно в смоей программе использовать другую
либо запускать другую и скрывать ее окно (как это сделать, а точнее скрывать окно)
либо как вставить в проект лазаруса код на си (в лазаре есть только сипп)
помогите пожалусто :mrgreen:
Аватара пользователя
dangreen
новенький
 
Сообщения: 72
Зарегистрирован: 21.11.2010 20:55:49

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

Сообщение daesher » 15.02.2011 22:43:07

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

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

Сообщение Odyssey » 15.02.2011 22:51:18

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, и использовать библиотеку через обёртку в своей программе.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

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

Сообщение dangreen » 16.02.2011 04:49:24

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

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

Сообщение dangreen » 22.02.2011 17:42:09

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

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

Сообщение Maxizar » 22.02.2011 20:30:20

Простое решение: это вызвать метод 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), там могут быть подводные камни касающиеся кросплатформенности...
Удачи.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

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

Сообщение dangreen » 22.02.2011 20:44:17

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

Добавлено спустя 19 минут 31 секунду:
наткнулся на вики на
PostMessage(FTree.Handle,WM_LBUTTONUP, MK_LBUTTON, 0);
и юзесы к нему (наверное) messages, windows, StdCtrls;
в лазаре нет windows и StdCtrls
Аватара пользователя
dangreen
новенький
 
Сообщения: 72
Зарегистрирован: 21.11.2010 20:55:49

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

Сообщение hinst » 22.02.2011 21:11:50

если вам надо заменять щелчки не только в своей программе, но во всей системе, то это средства операционной системы надо использовать, кроссплатформенного решения не предполагается
:idea: в лазаре нет windows и StdCtrls с чего вы взяли?
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

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

Сообщение dangreen » 22.02.2011 21:29:03

нужно чтоб работало только в моей программе
сори StdCtrls есть в лазаре
а windows http://puu.sh/11z1
Аватара пользователя
dangreen
новенький
 
Сообщения: 72
Зарегистрирован: 21.11.2010 20:55:49

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

Сообщение hinst » 22.02.2011 21:32:30

модуль Windows есть в лазарусе для Windows :mrgreen:
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

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

Сообщение dangreen » 22.02.2011 21:52:31

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

Добавлено спустя 1 минуту 13 секунд:
на PostMessage(FTree.Handle,WM_LBUTTONUP, MK_LBUTTON, 0); ругается
Аватара пользователя
dangreen
новенький
 
Сообщения: 72
Зарегистрирован: 21.11.2010 20:55:49

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

Сообщение Maxizar » 22.02.2011 23:27:24

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

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

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

Сообщение dangreen » 23.02.2011 05:17:49

ути какие капризульки нашлись
нафиг от таких помощь не нужна
Аватара пользователя
dangreen
новенький
 
Сообщения: 72
Зарегистрирован: 21.11.2010 20:55:49

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

Сообщение Иван Шихалев » 23.02.2011 05:24:16

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

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

Сообщение dangreen » 23.02.2011 05:29:40

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

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

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

Код: Выделить всё
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if Button = mbRight then
   begin
     ????????????????????????????
   end;
end;         
Аватара пользователя
dangreen
новенький
 
Сообщения: 72
Зарегистрирован: 21.11.2010 20:55:49

След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru