Sida 1 av 2
Simulera en rotationsgivare i Lazarus/Delphi
Postat: 16 december 2013, 10:21:34
av lgrfbs
Vad är ditt bästa förslag för att i GUI simulera en rotationspulsgivare med hjul genom en låda?
SEF_givare.png
Just nu funderar jag på om det skulle vara en idé att lägga ett antal paneler brevid varandra, typ:
SEF_givare2.png
Där den första panelen som får "OnMouseEnter" får värde noll och om man för muspekaren nedåt blir det -1 värde för varje panel i förhållandet till ingångs panelen och lika om man för muspekaren uppåt men då +1.
Så tänkta event som ska användas är:
OnMouseEnter
OnMouseLeave
OnMouseMove
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 16 december 2013, 12:45:01
av baron3d
Jag hade nog använt: OnMouseMove
Kollat riktning när knappen är nere.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 16 december 2013, 14:58:38
av lgrfbs
Min tanke var att användaren inte ska behöva klicka för att aktivera funktionen utan bara att muspekaren är innom ett av segmenten och använder det ingående segmentet som nollpunkt för matten upp/ner.
Får ta att göra ett test.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 02:12:54
av lgrfbs
Test utfört
Har fått till det funktionsmäsigt som jag vill ha det.
Har ni förslag på bättrekodning eller GUI(Då för själva funktionen)?
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 15:30:33
av baron3d
Fungerar !
Skulle själv ha löst det med en panel i st.f. flera.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 16:59:22
av lgrfbs
Har du tid att kasta ihop en demo?

Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 17:27:05
av SeniorLemuren
Är Lazarus någon typ av Delphi-kopia. Vilken version av Delphi möter den i så fall upp till?
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 17:44:49
av lgrfbs
Enligt min erfarenhet, så är Delphi 7 och Lazarus är rätt lika men det skiljer lite i hur komponenter byggs.
Lazarus är ett IDE till free Pascal.
Lazarus är gratis.
Lazarus har ett konverterningverktyg för Delphi till Lazarus.
Platforms
Android Development
Lazarus for Linux
Lazarus for Mac OS X
Lazarus for iOS
Lazarus for Windows
Lazarus for Web
http://www.lazarus.freepascal.org/
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 18:05:15
av SeniorLemuren
Ok. Kan du inte läsa av musens koordinater direkt på bilden. Se exempel.
Delphi.zip
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 18:18:54
av lgrfbs
Vid närmre efter tanke, jo det skulle gå.
Får dock sätta upp de olika zonerna med if-satser så att add/sub värdena blir rätt.
Ska testa.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 18:47:54
av BEEP
Edit: Upptäckte att koden inte fungerar som jag hade tänkt mig.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 20:01:10
av BEEP
Kod: Markera allt
const
WHEEL_LEFT = 70;
WHEEL_TOP = 40;
WHEEL_RIGHT = 90;
WHEEL_BOTTOM = 120;
WHEEL_ENC_MIN = 0;
WHEEL_ENC_MAX = 1000;
var
wheelEncPos : integer = 500;
wheelEncPosOld : integer = 500;
wheelPos : integer;
mouseStartPosY : integer = 0;
mouseOverWheel : boolean = false;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (X > WHEEL_LEFT) and (Y > WHEEL_TOP) and (X < WHEEL_RIGHT) and (Y < WHEEL_BOTTOM) then
begin
if mouseOverWheel = false then
begin
mouseOverWheel := true;
mouseStartPosY := Y;
end;
wheelEncPos := wheelEncPosOld - (mouseStartPosY - Y);
if wheelEncPos < WHEEL_ENC_MIN then wheelEncPos := WHEEL_ENC_MIN
else if wheelEncPos > WHEEL_ENC_MAX then wheelEncPos := WHEEL_ENC_MAX;
end
else
begin
mouseOverWheel := false;
wheelEncPosOld := wheelEncPos;
end;
wheelPos := wheelEncPos div 10;
Label1.Caption := 'wheel ' + IntToStr(wheelPos);
end;
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 20:31:50
av SeniorLemuren
Varför inte skicka med exe-filen så man ser resultatet?
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 20:50:33
av BEEP
"Varför inte skicka med exe-filen så man ser resultatet?"
Jag har inget antivirusprogram på datorn som jag kör Delphi på.
Edit: Ska virusskanna filen på den andra datorn, återkommer.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Postat: 17 december 2013, 23:21:39
av lgrfbs
BEEP din kod fungerade fint, men omvänt mot min och så startar den alltid på "wheel 50".
Tack för koden, lite ska jag väl tänka själv också
Test2_BEEP.zip
Kan rekomendera boken:
Getting started with Lazarus IDE
av: Roderick Person
ISBN 978-1-78216-340-4