Mugarik gabeko formaren tamaina aldatzen saiatzen ari naiz, baina eskuina / beheko aldea erabiliz tamaina handitzen dudanean, muga eta sagua mugitzen duzun abiaduraren araberako tartea lortzen dut.
Efektua nabariagoa da ezkerreko ertzetik edo beheko ezkerreko izkinatik tamaina aldatzean ere, izugarria da nonahi (beste aplikazio komertzial batzuekin saiatu nintzen eta gainera gertatzen da). Efektu hau tamaina handiko ertzera aldatzean ere gertatzen da, baina ez da inprimakiaren ertzak kentzen ditudan bezain ikaragarria
Inprimakiaren diseinua goiko panelean dago izenburuaren barra funtzioa egiten duena (t Irudi eta botoiekin) eta beste bestelako informazioa erakusten duten panelak (oharra, beste kontrol batzuk, adibidez)eta abar)
Nire kodearen zati bat dago saguaren botoia harrapatu eta mezu bat leihoetara bidaltzen dudanean, baina antzeko emaitzekin eskuz egiten ere saiatu naiz
Goiko paneleko buffer bikoitza aktibatzeak keinukeria ekiditen du, baina panela aldatzea ez da inprimakiaren tamaina aldatzearekin sinkronizatzen, horrela hutsune bat agertzen da edo panelaren zati bat desagertzen da
procedure TOutputForm.ApplicationEvents1Message( var Msg: tagMSG;
var Handled: Boolean );
const
BorderBuffer = 5;
var
X, Y: Integer;
ClientPoint: TPoint;
direction: integer;
begin
Handled := false;
case Msg.message of
WM_LBUTTONDOWN:
begin
if fResizable then
begin
if fSides = [sTop] then
direction := 3
else if fSides = [sLeft] then
direction := 1
else if fSides = [sBottom] then
direction := 6
else if fSides = [sRight] then
direction := 2
else if fSides = [sRight, sTop] then
direction := 5
else if fSides = [sLeft, sTop] then
direction := 4
else if fSides = [sLeft, sBottom] then
direction := 7
else if fSides = [sRight, sBottom] then
direction := 8;
ReleaseCapture;
SendMessage( Handle, WM_SYSCOMMAND, ( 61440 + direction ), 0 );
Handled := true;
end;
end;
WM_MOUSEMOVE:
begin
// Checks the borders and sets fResizable to true if it's in a "border"
// ...
end; // mousemove
end; // case
end;
Nola saihestu dezaket eremu hori eta / edo leihoak berriro marraztera behartu? Delphi erabiltzen ari naiz baina irtenbide generiko bat (edo beste hizkuntza batean) edo aurrera egiteko norabidea ere ondo legoke niretzat
Aldez aurretik eskerrik asko