Simulera en rotationsgivare i Lazarus/Delphi

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Simulera en rotationsgivare i Lazarus/Delphi

Inlägg 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
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1353
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av baron3d »

Jag hade nog använt: OnMouseMove

Kollat riktning när knappen är nere.
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg 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.
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av lgrfbs »

Test utfört :wink:
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.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1353
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av baron3d »

Fungerar !
Skulle själv ha löst det med en panel i st.f. flera.
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av lgrfbs »

Har du tid att kasta ihop en demo? :pray:
Användarvisningsbild
SeniorLemuren
Inlägg: 8425
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av SeniorLemuren »

Är Lazarus någon typ av Delphi-kopia. Vilken version av Delphi möter den i så fall upp till?
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg 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/
Användarvisningsbild
SeniorLemuren
Inlägg: 8425
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av SeniorLemuren »

Ok. Kan du inte läsa av musens koordinater direkt på bilden. Se exempel.
Delphi.zip
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg 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.
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av BEEP »

Kod: Markera allt

buggig kod bortagen
Edit: Upptäckte att koden inte fungerar som jag hade tänkt mig.
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg 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;
Senast redigerad av BEEP 17 december 2013, 20:39:10, redigerad totalt 1 gång.
Användarvisningsbild
SeniorLemuren
Inlägg: 8425
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg av SeniorLemuren »

Varför inte skicka med exe-filen så man ser resultatet?
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg 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.
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Simulera en rotationsgivare i Lazarus/Delphi

Inlägg 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å :humm:
Test2_BEEP.zip
Kan rekomendera boken:
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.
Skriv svar