Autor |
Beitrag |
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 01.12.11 11:02
macht ja nichts, das Event schlägt trotzdem auf dem Form auf
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm2.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin Caption := IntToStr(Wheeldelta div ABS(Wheeldelta)); Handled := true; end; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
tetris84
Beiträge: 31
|
Verfasst: Do 01.12.11 13:29
|
|
Tilo
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Do 01.12.11 13:37
Im Event wird die Mausposition mit übergeben.
Wenn Du weißt welches TImage wo ist kannst Du selbst drauf zugreifen.
Beim vorherigen Doppelklick auf ein TImage merkst du es dir (z.B in einer Variablen "LastClickedStone").
Wenn nun die Mausposition innerhalbder Koordinaten des Steines sind -> gewünschte Aktion ausführen.
MFG
Tilo
|
|
tetris84
Beiträge: 31
|
Verfasst: Do 01.12.11 13:59
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure THauptformLoopit.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); var x:byte; begin GewaehlterSteinCache := FSpielsteinName[x]; x := x+1; end; |
FSpielsteinName gibt den Namen eins Spielsteins wieder.
Geht das so?
Bei mir kommt jetzt immer der Fehler:
[DCC Fehler] UHauptform.pas(455): E2035 Nicht genügend wirkliche Parameter
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 01.12.11 14:04
ist wie stochern im Nebel, gegf. kannst Du das Projekt mal als Zip einstellen, oder zeigen was wie deklariert ist ...
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
tetris84
Beiträge: 31
|
Verfasst: Do 01.12.11 14:21
Das mit dem hochladen wird nichts :/ Hab ein so schlechtes Internet da würde das ne Stunde dauern.
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 01.12.11 14:29
Da ich nicht weiß was Du wie machst, vielleicht kannst Du folgendes so umbauen wie Du es brauchst .....
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm2.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if Assigned(FSelectedImage) then begin FSelectedImage.Tag := FSelectedImage.Tag + ( Wheeldelta div ABS(Wheeldelta)); if FSelectedImage.Tag < 0 then FSelectedImage.Tag := 0 else FSelectedImage.Tag > C_MAX then FSelectedImage.Tag := C_MAX; UpdateSelectedImage;
end; end;
procedure TForm2.Image1Click(Sender: TObject); begin FSelectedImage := TImage(Sender); end; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
thepaine91
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Do 01.12.11 14:45
tetris84 hat folgendes geschrieben : | Das mit dem hochladen wird nichts :/ Hab ein so schlechtes Internet da würde das ne Stunde dauern. |
|
|
tetris84
Beiträge: 31
|
Verfasst: Do 01.12.11 15:33
Traurig aber war
|
|
thepaine91
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Do 01.12.11 15:43
Naja also i-wie kann ich das grade nicht ganz glauben denn bei mir kommt ein Delphiprojekt ohne i-welche Bilder etc. nicht über 1 MB daher frage ich mich wie groß dein Projekt ist das es eine Stunde dauert. Denn bei einer Standardgröße von 1MB wäre das eine Uploadgeschwindigkeit von ~291 byte in der Sekunde.
|
|
tetris84
Beiträge: 31
|
Verfasst: Do 01.12.11 16:01
Es ist aber 18MB groß. Außerdem möchte ich das nur ungerne Hochladen da ich es ja selber verstehen möchte was da im Quelltext steht. Und wenn das jetzt jemand anderes macht find ich das doof. Ich versuchs jetzt erstmal so weiter.
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 01.12.11 19:10
Es sieht mir mehr so aus als willst du einfach nicht deinen Code offenlegen. Das kannst du ruhig sagen, das ist nicht unnormal
Im wesentlichen würd ichs so machen, wie bummi schon gesagt hat. Du speicherst die ID des angewählten Steins und beim OnMouseWheel schaltest du durch die verfügbaren Steine durch und lädst das entsprechende Bildchen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
tetris84
Beiträge: 31
|
Verfasst: Fr 02.12.11 11:24
So generell hab ichs jetzt fertig.
Delphi-Quelltext 1: 2: 3:
| Stein1: TImage; Bild : TBitmap; path : string; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure THauptformLoopit.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); var i:byte; SteinName,SpielsteinPfad:string; begin SteinName := FSpielsteinNamenRueckgabe(i); i := i+1;
Bild := TBitmap.Create; SteinCache := SteinName; SpielsteinPfad := 'Spielsteine\'+ SteinCache; path:= ExtractFilePath(Application.ExeName) + SpielsteinPfad; Bild.LoadFromFile(path); Stein1.Canvas.StretchDraw(Stein1.Canvas.ClipRect, Bild); end; |
Das Problem ist wenn ich jetzt zur Laufzeit Scrolle (nach unten) scrollt er nur in dem SgField. Wie verhinderre ich das und ermögliche das hallt Stein1 sich verändert?
Lg tetris84
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 02.12.11 11:35
so ...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm2.StringGrid1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin Handled := true; end;
procedure TForm2.StringGrid1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin Handled := true; end; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
tetris84
Beiträge: 31
|
Verfasst: Fr 02.12.11 11:44
Er scrollt immer noch in den Zellen von SGField umher :/ Gibt es in dem Feld eine Option die ich dafür auf False setzten muss?
Edit. Ich hab 60 verschiedene Steine. Wie realisiere ich es das jeder nur einmal gesetzt wird?
Lg tetris84
|
|
tetris84
Beiträge: 31
|
Verfasst: Mo 05.12.11 13:59
Moin,
hab das mit den Spielsteinen jetzt geschafft. Bei dem Scrollen funktioniert es immer noch nicht :/
Edit: Das mit dem Scrollen funktioniert jetzt. Ich musste erstmal mittels .SetFocus Irgentwo anders den Fokus hinlegen.
|
|
tetris84
Beiträge: 31
|
Verfasst: Do 08.12.11 14:16
Hey,
ich wollte nochmal fragen wie man ein Array in eine Ini Datei Speicher. Bei String,Integer und Boolean gibt es ja die Funktion ini.WriteString, ini.WriteInteger und ini.WriteBool. Wie soll ich also mein Array speichern?
Bis jetzt kann ich mir nur denken das man es so macht:
Delphi-Quelltext 1: 2: 3:
| Repeat ini.WriteString('Steine',Zwischenspeicher, Array[x,y]); Until (x = 1) and (y = 11); |
In Zwischenspeicher stehen dann auch nochmal die Koordinaten.
Geht es auch einfacher?
Lg tetris84
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 08.12.11 19:41
Bitte bei der nächsten Frage ein neues Topic aufmachen, damit andere User die Lösung auch per Suche finden können
Delphi-Quelltext 1:
| ini.WriteString('Steine',inttostr(x)+'-'+inttostr(y), Array[x,y]); |
So würd ich das machen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: tetris84
|
|