Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];

Вниз

Перетаскивание формы за контент руками   Найти похожие ветки 

 
han_malign   (2002-11-18 12:42) [0]

Напоролся на непонятный глюк
форма: BorderStyle=bsNone, на форме лежит Label на всю клиентскую область.
1. Label - оказалась не прозразчной для событий мыши(сама не обрабатывает и форме не отдает), не факт что это глюк, но пришлось протаскивать руками(ComponentStyle менял - не лечит).
2. При перетаскивании формы, сначала прыгает к краю экрана(противоположному направлению перетаскиваня), потом встает на задуманное место(сколько раз это делал, проблем не было). Во время перетаскивания получается след прорисовок от края экрана.

unit frmHexTable;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
THexTableForm = class(TForm)
lbHexTable: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDblClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure lbHexTableMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure lbHexTableMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure lbHexTableMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
F_ptOldPos : TPoint;
F_dwKeySwitch,
F_dwKeyClose: Integer;
F_dwIDSwitch,
F_dwIDClose: DWORD;
procedure HotyKey(var msg:TMessage); message WM_HOTKEY;
public
{ Public declarations }
end;

var
HexTableForm: THexTableForm;

implementation

{$R *.DFM}

procedure THexTableForm.FormCreate(Sender: TObject);
type TLR= packed record
Lo,Hi: word;
end;
begin
TLR(F_dwKeySwitch).Lo:=MOD_CONTROL;
TLR(F_dwKeySwitch).Hi:=byte("H");
TLR(F_dwKeyClose).Lo:=MOD_CONTROL+MOD_ALT;
TLR(F_dwKeyClose).Hi:=byte("H");

F_dwIDSwitch:=GlobalAddAtom("Malign_Hex_HKSwitch");
RegisterHotKey(handle,F_dwIDSwitch,MOD_CONTROL,byte("H"));

F_dwIDClose:=GlobalAddAtom("Malign_Hex_HKClose");
RegisterHotKey(handle,F_dwIDClose,MOD_CONTROL+MOD_ALT,byte("H"));

lbHexTable.ControlStyle:=
lbHexTable.ControlStyle{-[csCaptureMouse,csClickEvents,csDoubleClicks,csNoStdEvents]};
end;

procedure THexTableForm.FormDblClick(Sender: TObject);
begin
//
end;

procedure THexTableForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
UnRegisterHotKey(handle,F_dwIDSwitch);
UnRegisterHotKey(handle,F_dwIDClose);
end;

procedure THexTableForm.FormMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
MouseCapture:=true;
F_ptOldPos:=Point(X,Y);
end;

procedure THexTableForm.FormMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if(MouseCapture)then begin
Left:=Left+(F_ptOldPos.x-x);
Top:=Top+(F_ptOldPos.y-y);
end;
end;

procedure THexTableForm.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MouseCapture:=false;
end;

procedure THexTableForm.HotyKey(var msg:TMessage);
begin
if(msg.LParam=F_dwKeySwitch)then begin
Visible:=not Visible

end else if(msg.LParam=F_dwKeyClose)then Close;
end;

procedure THexTableForm.lbHexTableMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
FormMouseDown(Sender,Button,Shift,X,Y);
end;

procedure THexTableForm.lbHexTableMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
FormMouseMove(Sender,Shift,X,Y);
end;

procedure THexTableForm.lbHexTableMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
FormMouseUp(Sender,Button,Shift,X,Y);
end;

end.


 
han_malign   (2002-11-18 12:43) [1]

Mozilla - зараза еще глючит, две ветки получилось.


 
Николай Быков   (2002-11-18 12:48) [2]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1037541891&n=0


 
han_malign   (2002-11-18 12:56) [3]

Это я и так знаю, мне интересно откуда у конкретного глюка ноги растут, взяться то ему по идее не откуда, форма должна просто за курсором ползти(элементарное пассивное наведение - устранением дисбаланса текущей и сохраненной позиции мыши относительно окна), а она прыгает как вошь на сковородке.



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

Форум: "Основная";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
1-93083
Назаров Евгений
2002-11-16 14:37
2002.11.28
Вывод на печать в дельфи7.0


14-93205
Nico1a
2002-11-07 22:08
2002.11.28
Ищу хостинг


3-92825
Aristarh
2002-11-08 11:22
2002.11.28
Можно ли складывать DateTime поля...


1-93033
Andrei_
2002-11-19 13:20
2002.11.28
Выравнивание строк в ListBox


4-93281
daan_m
2002-10-12 12:16
2002.11.28
Как можно скрыть процес





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский