Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

Не перемещаемая форма. С какими то библ. конфликтует   Найти похожие ветки 

 
Layner   (2003-09-02 08:54) [0]

Подскажите, кто встречался, в одном приложении код работает, в других не работает, пишет
[Error] tov.pas(62): Incompatible types: "Integer" and "THitTest"

Причём, не пишет ошибку если библиотеки
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, main;


А если то, с чем я работаю, БД, - ошибка,
uses
Windows, Messages, SysUtils, Variants, Classes, ComCtrls, Graphics, Controls, Forms, Dialogs, StdCtrls, main, DBGrids, Grids, DBCtrls, ADODB, DB;


private
procedure hittest(var mes:Tmessage);message wm_nchittest;

procedure Tft.hittest(var mes:Tmessage);
begin
inherited;
case mes.Result of
htcaption,httopright,htbottom,htbottomleft,htbottomright,httop,htleft, htright,httopleft,htsize:
mes.result:=HTNOWHERE ;
end;
end;


 
Song ©   (2003-09-02 09:00) [1]

Попробуй Windows перенести в конец Uses


 
Layner   (2003-09-02 09:04) [2]

Song спасибо, помогает, ошибки нет, но и форма перемещается, т.е. код не дееспособный.. Сейчас попытаюсь подобрать местоположение Windows, может докопаюсь до истины.


 
Song ©   (2003-09-02 09:06) [3]

А зачем ты inherited вызываешь, если ты всё блокируешь?


 
Layner   (2003-09-02 09:14) [4]

inherited заремил, этот код я взял в kuliba1000,
Интересно то что этот же код работает просто, без БД, обзывал и процедуры по другому, и переменные не помогает.
Windows после ComCtrls - работает без ошибок, но и форма перемещается,
Windows до ComCtrls - работает только без БД, с БД-ошибка...


 
Skier ©   (2003-09-02 11:39) [5]

>Layner (02.09.03 09:14)
Может быть имеет место конфликт идентификаторов из разных модулей ?
Попробуй в обработчике сообщения перед идентификаторами ставить имя нужного модуля и точку.


 
Layner   (2003-09-02 12:55) [6]

Skier © (02.09.03 11:39)
Извинияюсь, не могу разобраться, есть код, а как его с идентификаторами повторить?

private
{ Private declarations }
procedure hittest(var mes:Tmessage);


procedure Tft.hittest(var mes:Tmessage);
begin
inherited;
case mes.Result of
htcaption,httopright,htbottom,htbottomleft,htbottomright,httop,htleft, htright,httopleft,htsize:
mes.result:=HTNOWHERE ;
end;
end;


 
Skier ©   (2003-09-02 13:02) [7]

begin
inherited;
case mes.Result of
Windows.htcaption,..., Windows.htsize:
mes.result:= Windows.HTNOWHERE;
end;
end;

Не поможет ?


 
Layner   (2003-09-02 13:14) [8]

Skier © (02.09.03 13:02), спасибо за совет, в общем, сделал, ошибки нет, компилируется нормально, но, всё равно, форма двигается. Наверняка в БД есть какие то одинаковые ф-и, которые мешеют этой, в USES Windows переставлял в конец, всё равно не помогает...


 
Skier ©   (2003-09-02 13:17) [9]

>Layner (02.09.03 13:14)

> но, всё равно, форма двигается.

Сдаётся мне что не за то сообщение (wm_nchittest) ты взялся.
Попробуй поиграться с WM_MOVING или WM_WINDOWPOSCHANGING


 
Anatoly Podgoretsky ©   (2003-09-02 13:32) [10]

Наверно больше подойдет wm_getminmaxinfo, он как раз для этой цели и существует.


 
Skier ©   (2003-09-02 13:38) [11]

>Anatoly Podgoretsky © (02.09.03 13:32)
Всё ж таки getminmaxinfo больше подходит для ограничения размеров формы,
а автору нужно чтобы форму нельзя было бы двигать, если я правильно понял...


 
Layner   (2003-09-02 13:54) [12]

чтобы форму нельзя было бы двигать, если я правильно понял
да, нельзя было двигать.

procedure WMmove(var Message: TMessage); message WM_WINDOWPOSCHANGING;
procedure WMmove(var Message: TMessage); message WM_MOVING;
procedure WMmove(var Message: TMessage); message wm_getminmaxinfo;


Всё равно не обрабатывают..


 
[lamer]Barmaglot ©   (2003-09-02 13:56) [13]

Это что?


 
Skier ©   (2003-09-02 13:59) [14]

Присоединяюсь к [13]


 
Layner   (2003-09-02 15:15) [15]

Ну это я писал не всё вместе конечно, по одной, код не привожу, он был выше, и не обрабатывает всё равно, форма как двигалась, так и двигается.


 
Skier ©   (2003-09-02 15:23) [16]

TYourForm = class(...)
private
procedure WMMoving(var Message : TMessage); message WM_MOVING;

//.............................

procedure TYourForm.WMMoving(var Message: TMessage);
begin
inherited;
with PRect(Message.LParam)^ do begin
Left := Self.Left;
Top := Self.Top;
Right := Self.Left + Self.Width;
Bottom := Self.Top + Self.Height;
end; //with
end;


 
Skier ©   (2003-09-02 15:24) [17]

Перед Width и Height "Self." не обязательно...


 
Layner   (2003-09-03 10:05) [18]

Skier
Спасибо огромное! Ура! Благодаря последнему коду всё получилось. Желаю всего самого наилучшего!



Страницы: 1 вся ветка

Текущий архив: 2003.09.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
1-48640
Alexey Klimov
2003-08-31 10:30
2003.09.15
Принтер и Фотошоп


1-48567
Man
2003-09-03 13:02
2003.09.15
Как в своё приложение встроить чужую программу


1-48612
McSimm2
2003-09-03 13:35
2003.09.15
Проскакивает выражение


1-48533
wdsergius
2003-09-02 12:35
2003.09.15
Как удалить каталог програмно ??????


14-48794
Pindos
2003-08-26 00:23
2003.09.15
Сервер не найден!!!