Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Memory für "Anfänger" (https://www.delphipraxis.net/105685-memory-fuer-anfaenger.html)

Saul 30. Dez 2007 15:07

Re: Memory für "Anfänger"
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Saul
ich kann ja schlecht schreiben "if image.tag=0 then...".

Wieso denn nicht? Genauso geht das.

Ich habe eine Prozedur onClick, die für alle Images gilt. da möchte ich es gerne mit reinschreiben. Kann man das denn irgendwie verallgemeinern? d.h. das ich eine Procedure schreibe und nicht immer für jedes Image (image1, image2, ...) diesen befehl schreiben muss?

wicht 30. Dez 2007 16:35

Re: Memory für "Anfänger"
 
Du kannst mit dem Objektinspektor mehreren Objekten die selbe Prozedur für ein Ereignis zuweisen.
In der Prozedur zum Ereignis hast du meist einen Parameter "Sender", der wäre in deinem Image-OnClick dann das Bild, auf das geklickt wurde.

Saul 30. Dez 2007 17:02

Re: Memory für "Anfänger"
 
BOAH ich habs satt. Ich finde meine Fehler nicht :cry:
Könnt ihr da nochmal einen blick drüber werfen?

irgendetwas stimmt da mit dem mischen nicht
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, Menus;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Button1: TButton;
    Button2: TButton;
    TrackBar1: TTrackBar;
    procedure FormCreate(Sender: TObject);
    procedure ImageClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zweiteKarte: Boolean = True;
  Bild1, Bild2, Bild3, Anzahl, zufall, i, k: Integer;
  Bild: Array[1..3] of String;                                 //Bildernamen
  Platz: Array[1..6] of Integer;                               //Bildnummer
  Nummer: Array[1..6] of Integer;                              //Bildnummer 2
  Name1, Name2 ,Name3: String;                                 //Imagename für Deckblatt

implementation

{$R *.dfm}



  procedure TForm1.FormCreate(Sender: TObject);
  begin
    randomize;     // Zufallszahlengenerator aktivieren
    Button1.OnClick(self);
  end;



// Karten neu

  procedure TForm1.Button1Click(Sender: TObject);
  begin
    // verdeckt
    Image1.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image2.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image3.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image4.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image5.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image6.Picture.LoadFromFile('Bilder/Deckblatt.bmp');

    // offen
    Bild[1]:= 'Bilder/HUND01.BMP';
    Bild[2]:= 'Bilder/HUND02.BMP';
    Bild[3]:= 'Bilder/HUND03.BMP';

    // gemischt platzieren
    Platz[1]:= 1;
    Platz[2]:= 2;
    Platz[3]:= 3;
    Platz[4]:= 1;
    Platz[5]:= 2;
    Platz[6]:= 3;

    Anzahl := 6;

    while Anzahl > 0 do               { Die Karten mischen }
    begin
      zufall:= random(Anzahl)+1;         // eine Karte aus dem Stapel ziehen
      Nummer[Anzahl]:= Platz[zufall];    // und auf letzten freien Platz auslegen
      for k:= zufall to Anzahl-1 do      // restliche Karten einen Platz nach vorn
      begin
          Platz[k]:= Platz[k+1];
      end;
      Anzahl:= Anzahl - 1;            // Der Stapel ist nun kleiner geworden
    end;
  end;



// Karten aufdecken

  procedure TForm1.ImageClick(Sender: TObject);
  begin

    zweiteKarte:= not(zweiteKarte);
    i:= StrToInt(TImage(sender).Name[6]);
    TImage(sender).Picture.LoadFromFile(Bild[Platz[i]]);
    Name1:= TImage(sender).Name;

    If zweiteKarte
    then begin
        Bild1:= i;
        Name1:= TImage(Sender).Name;
    end
    else begin
        Bild2:= i;
        Name2:= TImage(Sender).Name;
    end;

    If zweiteKarte
    then If Platz[Bild1] <> Platz[Bild2]
        then begin
            MessageDlgPos('Gesehen?', mtConfirmation, mbYesNoCancel,0,400,400);
            for k:= 0 to componentcount-1 do
                if (TImage(components[k]).Name=Name1) or (TImage(components[k]).Name=Name2)
                Then TImage(components[k]).Picture.LoadFromFile('Bilder/Deckblatt.bmp');
                end
                else
  end;
end.

Saul 30. Dez 2007 17:03

Re: Memory für "Anfänger"
 
Zitat:

Zitat von wicht
Du kannst mit dem Objektinspektor mehreren Objekten die selbe Prozedur für ein Ereignis zuweisen.
In der Prozedur zum Ereignis hast du meist einen Parameter "Sender", der wäre in deinem Image-OnClick dann das Bild, auf das geklickt wurde.

Ja das hab ich schonmal verwendet. Leider haben wir uns missverstanden. Hab mich etwas schlecht ausgedrückt. naja dazu komme ich dann später nochmal


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.
Seite 3 von 3     123   

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