Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-48605
Wonderu
2003-09-03 14:50
2003.09.15
Lock Computer


1-48601
MakNik
2003-09-03 15:57
2003.09.15
StringGrid


14-48705
Vlad Oshin
2003-08-28 12:23
2003.09.15
Про адресацию сетей


14-48748
gregi
2003-08-27 02:15
2003.09.15
Подскажите


1-48538
Belka
2003-09-02 11:53
2003.09.15
Програмное переключение ракскладки клавиатуры.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский