Autor Beitrag
Bockscar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105



BeitragVerfasst: Fr 21.10.05 11:09 
Hallo.
Ich bin dabei ein Roulettespiel zu programmieren und moechte folgendes umsetzen:

Man hat den Tisch (Da wo man normalerweise seine Jetons drauf legt). Hier soll man aber z.b auf 36 druecken und 36 wird als wette gespeichert ... (1 euro auf 36)

ich habe den tisch eben nur als ganzes und moechte wissen wie ich einzelne zahlen als "durchsichtige" knoepfe darstellen kann. Also die Grafik soll natuerlich die oberfaleche sein und klickbar sein.

Ich hoffe man versteht das und jemand kann mir helfen.


vielen dank!
Einloggen, um Attachments anzusehen!
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Fr 21.10.05 11:20 
Lege Einfach Label auf dein Image stell Transparent auf True dann kannst Du die Klickmethode vom Label Nutzen.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 21.10.05 11:20 
Mir fallen auf Anhieb zwei Möglichkeiten ein:
  • Auf jedes Feld ein Label mit der entsprechenden Zahl setzen und im OnClick jedes Labels dei gewünschte Funktion setzen
  • Anhand der Mauskoordinaten die Zahl bestimmen, auf die geklickt wurde. Dazu das Feld in ein Raster aufteilen und dann eine verschachtelte Case-Anweisung:
    ausblenden Delphi-Quelltext
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    case x of
      1..30:begin {erste Spalte}
        case y of
          1..30{erste Zeile}
             showmessage('1 Euro auf 1 gesetzt'); // ich weiss jetzt nicht was da für ne Zahl ist...
          31..60: showmessage('1 Euro auf 2 gesetzt');
          //...
        end;
      end;
      31..60begin {zweite Spalte}
        case y of
          1..30{erste Zeile}
             showmessage('1 Euro auf 12 gesetzt');
          31..60: showmessage('1 Euro auf 22 gesetzt');
          //...
        end;
      end;
    end;

_________________
We are, we were and will not be.
Bockscar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105



BeitragVerfasst: Fr 21.10.05 11:29 
danke, ich wberde als erstes die methode mit dem layer probieren!! danke danke!
DarkHunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 477

Win XP
D3 Prof, D2005 PE
BeitragVerfasst: Fr 21.10.05 11:51 
user profile iconGausi hat folgendes geschrieben:
Mir fallen auf Anhieb zwei Möglichkeiten ein:
  • Auf jedes Feld ein Label mit der entsprechenden Zahl setzen und im OnClick jedes Labels dei gewünschte Funktion setzen
  • Anhand der Mauskoordinaten die Zahl bestimmen, auf die geklickt wurde. Dazu das Feld in ein Raster aufteilen und dann eine verschachtelte Case-Anweisung:
    ausblenden Delphi-Quelltext
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    case x of
      1..30:begin {erste Spalte}
        case y of
          1..30{erste Zeile}
             showmessage('1 Euro auf 1 gesetzt'); // ich weiss jetzt nicht was da für ne Zahl ist...
          31..60: showmessage('1 Euro auf 2 gesetzt');
          //...
        end;
      end;
      31..60begin {zweite Spalte}
        case y of
          1..30{erste Zeile}
             showmessage('1 Euro auf 12 gesetzt');
          31..60: showmessage('1 Euro auf 22 gesetzt');
          //...
        end;
      end;
    end;


Ich würde es auch mit diesem Raster machen, allerdings scheint mir eine verschachtelte Case-Abfrage sehr kompliziert.
Sowas lässt sich auch sehr gut mathematische berechnen, ich hatte das mal irgendwo. Ich such den Code nocheinmal raus.

EDIT:
Hier ist er:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure getposition;
var 
  curposx,curposy:intger; //Maus Position
  koordx,koordy:integer //Feld im Raster
  x,y:absolute position im Raster
begin
  curposx := mouse.CursorPos.X - form.left - label.left;
  curposy := mouse.CursorPos.Y -form.top - label.top;
  koordx := curposx div breite; 
  x := koordx * breite; 
  koordy := curposy div hoehe;
  y := koordy * hoehe;  
end;

_________________
I believe that every human has a finite number of heart-beats. I don't intend to waste any of mine running around doing exercises.
- Neil Armstrong
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 21.10.05 12:09 
Stimmt, das kann man auch berechnen. Ich hatte nur meine Bildschirmtastatur im Kopf, und da habe ich das mit Case gemacht, weil die einzelnen Zeilen untereinander verschoben waren (wie auf einer Hardwaretastatur auch), und verschiedene Tasten verschieden groß waren. Da hatte ich dann kein Rechteck-Raster, sondern etwsa anderes, und da erschien mir der Weg mit Case einfacher.
Bei einem richtigen Raster wie hier sollte man den Weg übers Rechnen vorziehen.

_________________
We are, we were and will not be.