Announcement

Collapse
No announcement yet.

Großes Feld mit mehreren kleinen Feldern ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Großes Feld mit mehreren kleinen Feldern ?

    Hallo Programmiererinnen und Programmierer,

    hat jemand von Euch vielleicht eine Idee wie ich eine Komponente erstellen könnte die aus mehreren kleinen Feldern zum Anklicken besteht. Stellt Euch einfach ein Quadrat vor, welches in viele kleine Quadrate unterteilt ist. Ein Objekt zum Anklicken wäre ja kein Problem aber ein Objekt mit verschiedenen Feldern zum Betätigen. Kennt hier vielleicht jemand eine "einfache" Lösung.Ich hab bis jetzt noch nicht so viel mit Komponenten gemacht,

    und wär für jeden Vorschlag, Link oder Beispielquelltext dankbar.

    Bis dann, Detlef.

  • #2
    Hallo Detlef,

    ich weiß zwar nicht was du damit vorhast, aber vielleicht hilft das weiter: nimm einfach eine TImage-Komponente mit Bild als Hintergrund und legen lauter kleine TImage-Komponenten darüber, die zwar selber kein Bild enthalten, dafür aber auf den OnClick-Event reagieren. Damit kannst du ganz leicht feststellen, in welchen Bereich geclickt wurde.

    mfG,
    Helmu

    Comment


    • #3
      Hi

      Da die Felder ja alle gleich groß sind wird es wohl einfacher sein EIN TImage zu nutzen und das OnMouseDown() abzufragen:

      <pre>

      procedure Form1ImageMouseDown(Button, X, Y, Shift);
      var
      W,H: Integer;
      begin
      W := Image.Width div 6; // 6x4 Felder
      H := Image.Height div 4;
      X := X div W;
      Y := Y div H;

      // X, Y enthält nun die Koordinaten des feldes indem geklickt wurde
      // also X in [0..5], Y in [0..3]
      end;

      </pre>

      Gruß Hage

      Comment


      • #4
        Hallo Detlef,<br>so ein ähnliche Problem hatte ich auch.<br>Deshalb habe ich mir eine Komponente gebastelt, die mir maussensitive Bereiche<br>zur Verfügung stellt.<br>Hier kannst Du sie downloaden:<br>
        http://home.t-online.de/home/jensschumann/clickimg/clickimg.zip <br>

        Der Download beträgt ca. 800 kB (wg. exe sind enthalten). Ich persönlich finde es immer klasse, wenn die exe enthalten sind.<br> Dann kann ich mir die Komponente ansehen, <u><b>bevor</b></u> ich sie Installiere.<br>
        :-) Jens Schuman

        Comment


        • #5
          Hallo erstmal

          und danke für die vielen Vorschläge. Ich wollte eigentlich eine Art Schiffeversenken-Feld machen, hab das auch schon "relativ" weit(wirklich nur relativ). Allerdings liegt das so halbfertig schon seit einiger Zeit rum. Naja, was solls. Vielleicht werd ich das später mal zu Ende bringen.

          Auf jeden Fall nochmals danke an alle.

          Bis die Tage, Detle

          Comment


          • #6
            Na dann ist das doch relativ einfach. Du benötigst für jeden Spieler ein rechteckiges Spielfeld. Ich würde ein 2 dimensionales array nutzen, z.b. TSpielfeld = array[0..29, 0..19] of TPattern. Jedes solches TPattern speichert nun die Information ob und welches Schiff es enthält, ob es noch unsichtbar oder teilweise getroffen oder sogar versenkt wurde. Dein dargestelltes Spielfeld ist nun ein TImage und mehrere kleiner TImages mit den Bildern der verschiedenen Schiffe, Minen, Explosionen, Wasser, Wellen, Insel & Landteile. Je nach Typ des TPatterns wird nun das Spielfeld aus diesen kleineren, immmer gleich großen Bildern, zusammengesetzt. Bediener-Input kannste dann so wie oben gezeigt machen indem Du einfach die Mausposition auf die Koordinaten von TSpielFeld runterrechnest. Angenommen jedes Pattern wird als 20x20 Pixel Bitmap definiert dann ist das Spielfeld = 20x30 x 20x20 = 600 x 400 Pixel groß.

            Gruß Hage

            Comment


            • #7
              <B>Ein Feld in mehrere Felder aufteilen</B><br>
              Ein Hallo in die Runde!<br>
              Wer kann mir (=Neuling im Delphi)helfen den Inhalt aus einem Feld
              <br>(inhalt des Feldes = zB.: ABCDE) auf mehrere Felder<br>
              auf zu teilen.(zB.: 1. Feld = A / 2. Feld = B.....usw).<br>
              Ausserdem sollten vor jedem Neueintrag die einzelnen Felder<br>
              gelöscht werden.
              Gruss Gerno

              Comment


              • #8
                Hallo Hagen,
                <BR><BR>
                vielen Dank auch hier wieder mit einiger Verspätung.
                <BR><BR>
                Gruß Sep

                Comment

                Working...
                X