Как перехватить координаты мыши
|
1777 |
Отправлено: Среда, 09 Июня 2004, 14:07 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
вот нашел: http://programmer.iatp.org.ua/delphi/stati/hook.htmКод | var HookHandle: hHook;
function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall; var msg: PEVENTMSG; begin if Code >= 0 then begin result := 0; msg := Pointer(LParam); with Form1 do case msg.message of WM_MOUSEMOVE: Caption := IntToStr(msg.ParamL) + #32 + IntToStr(msg.ParamH); WM_LBUTTONDOWN: CheckBox1.Checked := true; WM_LBUTTONUP: CheckBox1.Checked := false; WM_RBUTTONDOWN: CheckBox2.Checked := true; WM_RBUTTONUP: CheckBox2.Checked := false; WM_KEYUP: CheckBox3.Checked := false; WM_KEYDOWN: CheckBox3.Checked := true; end; end else result := CallNextHookEx(HookHandle, code, WParam, LParam); end;
procedure TForm1.FormCreate(Sender: TObject); begin Form1.FormStyle := fsStayOnTop; CheckBox1.Enabled := false; CheckBox1.Caption := 'left button'; CheckBox2.Enabled := false; CheckBox2.Caption := 'right button'; CheckBox3.Enabled := false; CheckBox3.Caption := 'keyboard'; HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0); end;
procedure TForm1.FormDestroy(Sender: TObject); begin if HookHandle <> 0 then UnhookWindowsHookEx(HookHandle); end;
| |
|
Форум: Программирование
· Просмотр сообщения: #58119
· Ответов: 1
· Просмотров: 4103
|
Как перехватить координаты мыши
|
1777 |
Отправлено: Среда, 09 Июня 2004, 11:40 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Нигде в инете нет нормального описания.
Мне нужно получить координаты мыши за пределами моей формы. Есть функция GetCursorPos. Мне еще как-то надо сделать и включить перехватчик событий/сообщений - вот как? Или может есть уже другой готовый способ? Программиться в делфи.
Заранее благодарен. |
|
Форум: Программирование
· Просмотр сообщения: #58108
· Ответов: 1
· Просмотров: 4103
|
Создание массива объектов в Delphi
|
1777 |
Отправлено: Вторник, 06 Апреля 2004, 21:06 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Все дошло походу: надо писать A[i]:=TMyObject.Create; совсем про это забыл заглючился |
|
Форум: Программирование
· Просмотр сообщения: #55865
· Ответов: 1
· Просмотров: 7173
|
Создание массива объектов в Delphi
|
1777 |
Отправлено: Вторник, 06 Апреля 2004, 18:20 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Создание динамического/статического массива объектов-наследников от TObject. Есть два юнита. Главный: Код | unit MainUnit;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ObjectUnit, StdCtrls;
type TMainForm = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end;
var MainForm: TMainForm;
A: array of TMyObject;
implementation
{$R *.dfm}
procedureTMainForm.Button1Click(Sender: TObject); begin ............. end;
procedureTMainForm.FormCreate(Sender: TObject); var i: integer; begin SetLength(A,3); for i:=0 to 2 do begin A[i].Create; A[i].IntegerField:=i; end; end;
procedureTMainForm.FormDestroy(Sender: TObject); var i: integer; begin for i:=0 to 2 do begin A[i].Destroy; end; A:=nil; end;
end.
|
и юнит самого объекта-наследника
Код | unitObjectUnit;
interface
uses Windows, Messages, SysUtils, Classes, Dialogs;
type TMyObject = class(TObject) private FIntegerField: integer; public constructor Create; property IntegerField: integer read FIntegerField write FIntegerField; end;
implementation
constructor TMyObject.Create; begin inherited Create; FIntegerField:=1; end;
end.
|
Суть: создавать/уничтожать динамический массив объектов, с обращением к ним по индексу в процессе работы программы. При данной реализации в строке
с переходом в
Код | [B]inherited[/B] Create; |
где выводит ошибку AccessViolation. Как здесь надо делать? |
|
Форум: Программирование
· Просмотр сообщения: #55863
· Ответов: 1
· Просмотров: 7173
|
Стандартный визуальный компонент в
|
1777 |
Отправлено: Воскресенье, 29 Февраля 2004, 12:27 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Пишу собственный компонет по поиску во вложенных папках. Мне нужно запихнуть в него ProgressBar, прописал его в public, но оно не работает, пытался в конструкторе моего компонента создать ProgressBar его методами, то же нифига, Как сделать? Причем впоследствие предполагается, что другой ProgressBar на форме должен отображать все, что происходит с ProgressBar-ом в моем компоненте... |
|
Форум: Программирование
· Просмотр сообщения: #54730
· Ответов: 0
· Просмотров: 2512
|
Важно: Умная программа сборщик-компьютеров
|
1777 |
Отправлено: Вторник, 20 Января 2004, 19:06 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
GeizeR, да, но можно же сделать корректировку и дополнение/замену самим человеком-юзером, и ежику ясно, что на прогу положиться нельзя. |
|
Форум: Программирование
· Просмотр сообщения: #53175
· Ответов: 54
· Просмотров: 68204
|
Важно: Умная программа сборщик-компьютеров
|
1777 |
Отправлено: Понедельник, 19 Января 2004, 21:37 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Однажды у меня появилась мысль создать прогу по проектированию сетей. Структутра примерно такая же, как вы здесь и обсуждаете. Есть БД, где харнятся данные обо всех компонентах сети (сетевые платы, кабеля, хабы и т.д. со всеми их характеристиками). При помощи мастера вводиться: 1) параметры будущей сети: назначение, расположение (одна команта, здание, несколько зданий, и т.д.). Продумал модульный подход: если выбрали здание, то потом задача разбивается на более легкие - в каждой комнате. 3) Далее вводятся расстояния, топологию (можно поставить на автомат), степень защищенности и наждежности если топология автоматом, организацию. По результам мастера создавался 1-,2-,3-мерный вложенный массив с набором параметров. Суть: прога по заданным параметрам прога состоявляет проект с учетом всех особенностей проектирования сетей (максимальное число рабочих станций, тип кабеля, максимальная длина, дополнительное оборудование типа хабов, репитеров, терминаторов и т.д.), и подсчитывает стоимость. Все данные берет из БД и подбирает решение укладывающееся в цену. Были сложности, такие же будут и у вас, о части из них уже рассказали Сложным было: 1) учесть большинство вариантов используемого оборудования: радиомодемы, спутниковые, оригинальные решения вроде сети через розетку 220в и т.п. Плюс программа должна была в тексте ознакомить с технологиями и дать рекомендации (это в приницпе ерунда) и возможность добавлять новые технологии (подумавалось использовать универсальное индексирование и подстановку полей типа: обязательный элемент для реализации, необязательные элемент при условии, что.... + определенные правила заполения БД новыми элементами). Хотя был вариант использовать только стандартные, часто используемые варианты (например, только витая, коаксиал и оптоволокно). 2) где и как хранить введенные параметры (а их много, например если два здания, соединенные оптоволокном, в каждом много комнат и т.д.), при условии, что они должны легко обрабатыватся. 3) модуль "Поиск решения" - самая сложная вещь, были мысли реализовать это только тупым перебором/подбором элементов при некторых условиях (типа если витая пара, то через каждые 100 метров ставить хаб).
Теперь что касается вашей задачи: Задумка хорошая (как впрочем и все задумки). Сложные части: 1) соответствие одной детали другой: куча условий, или выбора из доступного спикска, но нужны определнные правила, сложность учесть ВСЕ параметры совместимости. Напрмиер можно с легкостью сделать: мать к ней только DDR, но DDR тоже разные бывают, может мать не поддерживает двухсторонние планки (это как пример). Т.е. придется продумтаь правильную систему параметров соотвествия. 2) Модуль "Поиск решения", как он будет выполнять свою задачу - подбирать ПК под цену. Есть два варианта: а) задать цену, юзер проги сам подбирает компоненты исходя из своих знаний, прога лишь слегка корректирует его действия, напрмиер: юзер указал мать для DDR памяти, потом в списке памти прога выдала соотвествующе матери планки памяти. Если в результате цена ПК не уложилась в допустимые предел, тогда либо просто сообщение, либо дополнительно список рекомендаций, например: вместо 256 памяти - поставить 512, тогда цена будет такая, вместо 2,4 ГГц поставить 1,8 тогда цена будет такая. б) задать цену, и назначение ПК, а "модуль решения" на выходе даст подборку, но подборки должны быть динамическими, т.е. нельзя будет заранее занести варинат для игрового, офсного ПК, а потом смотреть есть ли для него детали на складе. Тут опять наужна продуманная система выдающая результат по условиям, например: если нужен ПК для звукоредактирования, значит будет пара условий: побольше денег для звуковухи и выбирать из наиболее качественных (сслыка в сторону продуманной системы индексирования и полей, см п.1.), а для видюхи - поменьше, и т.п. |
|
Форум: Программирование
· Просмотр сообщения: #53122
· Ответов: 54
· Просмотров: 68204
|
CD-RW
|
1777 |
Отправлено: Четверг, 23 Октября 2003, 19:02 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Asus 48x24x52 - только шумный очень, а так - читает диски идеально. Как-то был тест в инете - он и плекстор - были на равне по ошибкам при чтении (в 90 % ноль ошибок). |
|
Форум: Железо
· Просмотр сообщения: #49311
· Ответов: 33
· Просмотров: 10195
|
Сетевое программирование
|
1777 |
Отправлено: Понедельник, 13 Октября 2003, 15:59 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
mokc0der, мне надо что-то вроде самоучителя с конкретными примерами, завтра пойду пройдусь по магазинам, а встроенный - там просто как справочник процедур и функций, а саму суть я не могу понять (зато нашел по сокетам, но у меня не установлены компоненты: http://www.realcoding.net/modules.php?name...es&cid=7&ccc=25, 2, 7, 8 ссылка в списке), типа как оно работает, составные части, что за что отвечает и т.д. |
|
Форум: Программирование
· Просмотр сообщения: #48640
· Ответов: 24
· Просмотров: 15456
|
Сетевое программирование
|
1777 |
Отправлено: Воскресенье, 12 Октября 2003, 12:12 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Раз тут пошло про сетевое программирование, не подскажите где достать описание для Indy servers/clients для delphi??? |
|
Форум: Программирование
· Просмотр сообщения: #48579
· Ответов: 24
· Просмотров: 15456
|
Передача переменной из дочерней формы в главную
|
1777 |
Отправлено: Пятница, 05 Сентября 2003, 19:32 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Вобщем дошло до меня, не важно в какой процедуре, ведь если данные сохранились в unit2, то при их далнейшей обработке в форме1 все равно надо будет создать кнопку, описать для нее процедуру, где данные можно будет достать из unit2, т.к. все решено, спасибо. Но у меня тут вопрос еще один: вот есть компонент DriveBox, вкладка win31, для смены носителя. Какую процедуру прописать и как, что бы оно проверяло налчие самого диска (дискеты или сдрома) в носителе (типа ошибка, i/o 21, когда я обращаюсь к сидрому, а диска в нем нет). |
|
Форум: Программирование
· Просмотр сообщения: #46566
· Ответов: 10
· Просмотров: 7004
|
Передача переменной из дочерней формы в главную
|
1777 |
Отправлено: Пятница, 05 Сентября 2003, 14:21 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
mokc0der, неа, пофигу, все равно. Это просто изменяется способ передачи, но никак время появления. |
|
Форум: Программирование
· Просмотр сообщения: #46533
· Ответов: 10
· Просмотров: 7004
|
Что день грядущий нам готовит
|
1777 |
Отправлено: Четверг, 04 Сентября 2003, 19:21 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Я вот все вспоминаю 1989 год, я тогда был еще совсем маленьким , но помню, что тогда сидел за 286 на 16МГц, и было на нем 2 метра ОЗУ, а видео 256 кб. Моники тогда были на 16 цветов EGA, это стандарт. Хотя застал еще и CGA на 4 цвета. Еще было несколько 386 - но МГц не помню. Вот времена были Игрушки - каждая шедевр в своей области. Причем самые-самые первые части игр, сиквелы которых сейчас уже доходят до 4 - 5 а то и 9 штук. А еще помню выставку компьютерную то ли 1990 то ли 1991, там был самый крутой проц на 100МГц, выставочный образец. А сейчас: 4 ГГц, 2 Гб озу, 512 Мб видео. Офигеть, одним словом. Но все равно интересно, что дальше будет-то. Кстати у кого есть оригинал старой игрушки Comanche Maximum Overkill? Это самая первая часть была. Я себе коллекцию собираю, самая старая 1988 года Adventure of capitan Comic, может помнит кто, что такая игра была. А еще Death Track от 1989 года - основоположник Interstate76/82 и последующих гонок со стрельбой. |
|
Форум: Железо
· Просмотр сообщения: #46498
· Ответов: 1
· Просмотров: 2223
|
Передача переменной из дочерней формы в главную
|
1777 |
Отправлено: Четверг, 04 Сентября 2003, 18:16 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Как ее (переменную) достать отуда (из unit2)? И в какую процедуру в форме1 это запихнуть. То что есть сейчас cделал:
procedure TForm1.FormClick(Sender: TObject); begin label1.Caption:=Form2.res; end;
Это работает, но после того как кликнешь по форме1. Но а как сделать, чтобы сразу после закрытия формы2, т.е. без кликанья - это работало, в какую процедуру? Если запихнуть это в procedure TForm1.N4Click(Sender: TObject); т.е. основную, которая вызывает форму2 - не работает. |
|
Форум: Программирование
· Просмотр сообщения: #46484
· Ответов: 10
· Просмотров: 7004
|
Передача переменной из дочерней формы в главную
|
1777 |
Отправлено: Четверг, 04 Сентября 2003, 16:03 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
mokc0der, Ошибку я посмотрю, а вот если мне надо не результат нажатия кнопки (но и на этом спасибо), а допустим переменную (например путь к файлу на диске стринговый или там интеждер, флоат, булеан) как тогда-то? |
|
Форум: Программирование
· Просмотр сообщения: #46476
· Ответов: 10
· Просмотров: 7004
|
Передача переменной из дочерней формы в главную
|
1777 |
Отправлено: Вторник, 02 Сентября 2003, 14:20 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Пишеться на delphi7 unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Menus, StdCtrls, Unit2;
type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; Memo1: TMemo; Label1: TLabel; procedure N4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm1.N4Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); Form2.Show; label1.Caption:=Form2.res; .... end;
end.
unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm2 = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public res:integer; { Public declarations } end;
var Form2: TForm2; res:integer;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject); begin res:=1; label1.Caption:=IntToStr(res); Form2.Close; end;
procedure TForm2.Button2Click(Sender: TObject); begin res:=2; label1.Caption:=IntToStr(res); Form2.Close; end;
Переменную res надо передать в форму1, а форму2 закрыть, раньше она у меня даже не закрывалась, а теперь при закрытии - выдает ошибку по адресу... |
|
Форум: Программирование
· Просмотр сообщения: #46365
· Ответов: 10
· Просмотров: 7004
|
Передача переменной из дочерней формы в главную
|
1777 |
Отправлено: Воскресенье, 31 Августа 2003, 19:20 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Есть форма (форма1), в ней кнопка, которая создает другую форму (форма2). В форме2 есть две кнопки, одна из них записывает в переменную, что она была нажата. Эту переменную надо передать в форму1 и закрыть форму2. Как сделать? Создание происходит без проблем, а вот дальше, такое чувство, что форма2 не получает управление, все можно сдлеть через форму1, но мне это не надо. Как предать управление на время форме2, а после ее закрытия вернуть форме1? |
|
Форум: Программирование
· Просмотр сообщения: #46249
· Ответов: 10
· Просмотров: 7004
|
графическая станция
|
1777 |
Отправлено: Понедельник, 18 Августа 2003, 17:05 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
deepsea, А мне кажется что не проц главное а память, надо ее побольше 1,5-2 гб, и пропускную способность поболее - 2-ух канальную |
|
Форум: Железо
· Просмотр сообщения: #45573
· Ответов: 5
· Просмотров: 2232
|
SoftIce
|
1777 |
Отправлено: Среда, 16 Июля 2003, 18:50 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
mokc0der, спасибо, я еще в журнальчике прочитал, что про отладку для обычных прог. |
|
Форум: Программирование
· Просмотр сообщения: #43781
· Ответов: 62
· Просмотров: 53740
|
SoftIce
|
1777 |
Отправлено: Вторник, 15 Июля 2003, 18:34 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
А что такое SoftIce? |
|
Форум: Программирование
· Просмотр сообщения: #43709
· Ответов: 62
· Просмотров: 53740
|
В чем винда хранит реестр
|
1777 |
Отправлено: Воскресенье, 06 Июля 2003, 8:25 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
yozh, Я через RadioGroup и сделал. Все остальное поробую. |
|
Форум: Программирование
· Просмотр сообщения: #43263
· Ответов: 41
· Просмотров: 22270
|
В чем винда хранит реестр
|
1777 |
Отправлено: Суббота, 05 Июля 2003, 21:09 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
yozh, Короче сделал я себе прогу по сравнению реестра, если хочешь могу выслать запакованный exe-шник (200кб) или исходник. Но у меня при этом возникли пару вопросов: 1) как из текста (например в edit1) переделать (конвертировать) в тип HKEY? 2) как в StringGrid нужную ячейку (например [2;3]) закрасить цветом (фон). Я нашел только для всего фона, но мне надо только одну ячейку (или соответсвующую ей строку)??? я такой процедуры(функции) не нашел, но вот думаю: однажды я добавил не достающую мне функцию в StringGrid (всетаки классная вещь "наследование"), в принципе и с эти могу сделать также, но я не знаю самого механизма закрашивания. Может занешь как там это делается? |
|
Форум: Программирование
· Просмотр сообщения: #43256
· Ответов: 41
· Просмотров: 22270
|
В чем винда хранит реестр
|
1777 |
Отправлено: Суббота, 05 Июля 2003, 18:09 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
Все разобрался, причина: Цитата | Exception (исключение) вызывает у тебя строка "Val.Create;", в которой ты, видимо, пытаешься динамически создать StringList. До рестра вообще дело не доходит. Будь внимательнее при написании программ: не Val.Create; , а RegValues:=TStringList.Create; |
То, что там был "Val" - это роли не играет с ним тоже идет. Так что мистика закончилась. Спасибо, Ты оказался прав (в циатате). |
|
Форум: Программирование
· Просмотр сообщения: #43253
· Ответов: 41
· Просмотров: 22270
|
В чем винда хранит реестр
|
1777 |
Отправлено: Суббота, 05 Июля 2003, 17:37 |
Участник
Группа: Участник
Сообщений: 106
Регистрация: 28.12.2002
Пользователь №: 4477
|
НЕ Я В АФИГЕ ПОЛНЕЙШЕМ, действительно РАБОТАЕТ. Это что глюк был????????????????? Не сйчас разберусь, посмотрю в чем разница... |
|
Форум: Программирование
· Просмотр сообщения: #43247
· Ответов: 41
· Просмотров: 22270
|
Новые ответы Нет новых ответов Горячая тема (Есть ответы) Горячая тема (Нет ответов) |
Опрос (Есть ответы) Опрос (Нет ответов) Закрытая тема Тема перемещена |
|
|
© Copyright by WinCity.Ru 2001 - 2008 | Обратная связьУслуги веб-хостинга предоставлены компанией MTW.RU
|
|