Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   PfannkuPlus - Mein erstes Programm (https://www.delphipraxis.net/68181-pfannkuplus-mein-erstes-programm.html)

nezumi 26. Apr 2006 11:33

Re: PfannkuPlus - Mein erstes Programm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Toredo,

das Wackeln hab ich mit einem Timer und einer Scrollbar gemacht (Timer sehr kurze Intervalle, z.B. 8 ms, Scrollbar Visible auf false setzen):

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Scrollbar2.Position := Scrollbar2.Position +1;
end;

procedure TForm1.ScrollBar2Change(Sender: TObject);
begin

Case Scrollbar2.Position of
1:
begin
Form1.Top := Form1.Top +1;      
Form1.Left := Form1.Left -1;    
end;
2:
begin
Form1.Top := Form1.Top -1;      
Form1.Left := Form1.Left -1;    
end;
3:
begin
Form1.Top := Form1.Top -1;      
Form1.Left := Form1.Left +2;    
end;
4:
begin
Form1.Top := Form1.Top +1;      
Form1.Left := Form1.Left +2;    
end;
 //usw., ca 30 mal
end;
Für das Klingeln hab ich mir einfach einen Klingelton im .wav Format gesucht und in die .exe eingebunden. Wenn Du nicht weißt wie das geht, ich hab mir hierzu mal eine kleine Anleitung geschrieben, die ich anhänge.

Gruß,
nezumi

Matze 26. Apr 2006 12:04

Re: PfannkuPlus - Mein erstes Programm
 
Hallo,

nettes Tool und sehr interessant, auf was für Gedanken manche kommen (das mit der versteckten Scrollbar, schon faszinierend, wenn auch sehr schlecht gelöst). ;)

Du wirst dich mit der Rekursion noch nicht beschäftigt haben (Funktion/Prozedur, die sich selbst aufruft), doch damit kann man das sehr schön lösen. In den Stack (so eine Art Zwischenspeicher), werden die Werte für die Formularposition geschrieben und am Ende wieder rückwärts abgearbeitet, womit das Formular am Ende wieder vollautomatisch in die Ursprungsposition zurück gelangt.

Falls es dich interessiert, das kann man so lösen (ganz ohne Timer):

Delphi-Quellcode:
// Ersatz für sleep(), nur dass die Anwendung nicht einfriert
// Code ist aus der Code-Library
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(Milliseconds);
    while (Milliseconds > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      if Application.Terminated then Exit;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;

// eigentliche rekursive Prozedur
procedure MoveForm(FLeft, FTop, Count: Integer);
begin
  if Count > 0 then
  begin
    // "Random(9) - 4" erzeugt einen Zufallswert zwischen -4 und 4
    MoveForm(
      Form1.Left + Random(9) - 4,
      Form1.Top + Random(9) - 4,
      Count - 1);
  end;

  Form1.Left := FLeft;
  Form1.Top := FTop;
  Delay(50);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MoveForm(Left, Top, 20);
end;
Die Prozedur Delay ist, wie im Kommentar erwähnt, dazu da, um die Funktion Delphi-Referenz durchsuchenSleep zu ersetzen, da Sleep die ganze Anwendung einfriert. Delay pausiert den Programmablauf (hier für 50 Millisekunden). Die "Rüttelprozedur" ist die zweite. Du siehst, das ist richtig schön kurz und sauber gelöst. :) Im OnCreate der Form kannst du auch "Randomize" aufrufen, damit das Rütteln nicht immer das gleiche ist, doch ist dies in dem Falle ja eigentlich egal. ;) Mit dem 3. Parameter (Count) kannst du die Dauer des Rüttelns festlegen.

Falls du verständnisfragen dazu hast, kannst du sie gerne stellen. Mit versteckten Komponenten zu "spielen" ist nicht schön.

toredo 27. Apr 2006 20:12

Re: PfannkuPlus - Mein erstes Programm
 
thx für den wackel/ring-code, ich hab endlich geschafft diese beiden funktionen zu benutzen.
thx



mfG toredo

Mackhack 27. Apr 2006 21:22

Re: PfannkuPlus - Mein erstes Programm
 
Colle ausgefallene Idee,

ihr glaubt gar net dass in praktisch jedem Haushalt hier in USA der PC in der Kueche steht... :???:

3_of_8 27. Apr 2006 21:25

Re: PfannkuPlus - Mein erstes Programm
 
Wird ein Pfannkuchen gekocht? (is being cooked)
Wohl eher gebacken. (is being baken)

Könnte mich auch irren...

Und: front side und back side wird auseinander geschrieben.

nezumi 28. Apr 2006 10:31

Re: PfannkuPlus - Mein erstes Programm
 
@ Mackhack

Danke für den Hinweis. Werde mein Vertriebsnetz in den Staaten umgehend ausbauen. Wusste doch, dass ich eine Marktlücke gefunden habe... :lol:

@ 3_of_8

Kam mir auch komisch vor. Aber jemand der sich rühmt, der englischen Sprache mächtig zu sein, meinte, bei Pfannkuchen heiße es "cook". Hab ich dann einfach mal geglaubt...

s.h.a.r.k 28. Apr 2006 10:41

Re: PfannkuPlus - Mein erstes Programm
 
Hey.

Ich mag ja wirklich nicht meckern, aber ein Bild wäre eventuell nicht ganz schlecht. Dann weiß ich auch wirklich ob es für mich in Frage kommt und ob ich es testen will.

Bin irgendwie der Meinung, dass das sehr viel in letzter Zeit vergessen!

mfg shark

pacman1986 28. Apr 2006 11:19

Re: PfannkuPlus - Mein erstes Programm
 
Inovatives eigenständiges denken :thumb:
Ich werd das nächste mal beim pfannkuchen backen dein prog testen :D

OregonGhost 28. Apr 2006 11:31

Re: PfannkuPlus - Mein erstes Programm
 
Zitat:

Kam mir auch komisch vor. Aber jemand der sich rühmt, der englischen Sprache mächtig zu sein, meinte, bei Pfannkuchen heiße es "cook". Hab ich dann einfach mal geglaubt...
Im englischsprachigen Wikipedia unter pancake steht auch überall was von cooking. Backen ist doch wohl was im Ofen und nicht in der Pfanne :)

Ansonsten, tolles Programm, wenn mein WLAN bis in die Küche reichen würde, hätte ich meinen Laptop bestimmt öfter dort stehen, aber du gibst mir ja nen Grund :mrgreen:

INA 28. Apr 2006 12:46

Re: PfannkuPlus - Mein erstes Programm
 
@3_of_8 and @nezumi

Pancakes werden definitiv nicht "baked" - "to bake" involviert, dass man etwas in einen heissen Ofen befoerdert.

Pancakes werden "cooked" oder allenfalls noch "made".

Statt "frone side" und "back side" ginge auch "top side" und "reverse side". Oder einfach "first and second side". :warn:

Aber cooles Programm!!Setzt allerdings eine ziemlich gleichbleibend heisse Pfanne und definierte Teigmenge/Backvorgang voraus.... :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz