Simulera en rotationsgivare i Lazarus/Delphi
Simulera en rotationsgivare i Lazarus/Delphi
Vad är ditt bästa förslag för att i GUI simulera en rotationspulsgivare med hjul genom en låda?
Så tänkta event som ska användas är:
OnMouseEnter
OnMouseLeave
OnMouseMove
Just nu funderar jag på om det skulle vara en idé att lägga ett antal paneler brevid varandra, typ:
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
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Jag hade nog använt: OnMouseMove
Kollat riktning när knappen är nere.
Kollat riktning när knappen är nere.
Re: Simulera en rotationsgivare i Lazarus/Delphi
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.
Får ta att göra ett test.
Re: Simulera en rotationsgivare i Lazarus/Delphi
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)?

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)?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Simulera en rotationsgivare i Lazarus/Delphi
Fungerar !
Skulle själv ha löst det med en panel i st.f. flera.
Skulle själv ha löst det med en panel i st.f. flera.
- SeniorLemuren
- Inlägg: 8425
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Simulera en rotationsgivare i Lazarus/Delphi
Ä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
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.
Lazarus är ett IDE till free Pascal.
Lazarus är gratis.
Lazarus har ett konverterningverktyg för Delphi till Lazarus.
http://www.lazarus.freepascal.org/Platforms
Android Development
Lazarus for Linux
Lazarus for Mac OS X
Lazarus for iOS
Lazarus for Windows
Lazarus for Web
- SeniorLemuren
- Inlägg: 8425
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Simulera en rotationsgivare i Lazarus/Delphi
Ok. Kan du inte läsa av musens koordinater direkt på bilden. Se exempel.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Simulera en rotationsgivare i Lazarus/Delphi
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.
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
Kod: Markera allt
buggig kod bortagen
Re: Simulera en rotationsgivare i Lazarus/Delphi
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;
Senast redigerad av BEEP 17 december 2013, 20:39:10, redigerad totalt 1 gång.
- SeniorLemuren
- Inlägg: 8425
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Simulera en rotationsgivare i Lazarus/Delphi
Varför inte skicka med exe-filen så man ser resultatet?
Re: Simulera en rotationsgivare i Lazarus/Delphi
"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.
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
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å
Kan rekomendera boken:
Getting started with Lazarus IDE
av: Roderick Person
ISBN 978-1-78216-340-4
Tack för koden, lite ska jag väl tänka själv också

Getting started with Lazarus IDE
av: Roderick Person
ISBN 978-1-78216-340-4
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.