Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
ВнизНе перемещаемая форма. С какими то библ. конфликтует Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c