Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Skat - Bilder in Stringgrid einfügen (https://www.delphipraxis.net/64501-skat-bilder-stringgrid-einfuegen.html)

tankm26 4. Mär 2006 11:23


Skat - Bilder in Stringgrid einfügen
 
Liste der Anhänge anzeigen (Anzahl: 1)
MoinMoin!

Mir gelingt es nicht Spielkarten in ein Stringgrid einzufügen. Nach meinen Versuchen bekam ich stets alle Karten auf allen "Cols" angezeigt. Wer kann mir hierbei helfen?


mfg


Wieland

Delphi-Quellcode:

unit skat1;

interface

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

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    MainMenu1: TMainMenu;
    start1: TMenuItem;
    neuerunde1: TMenuItem;
    beenden1: TMenuItem;
    hilfe1: TMenuItem;
    regeln1: TMenuItem;
    reglnfrdeppen1: TMenuItem;
    regelnfrleutediezudooffrsaktsind1: TMenuItem;
    JA: TButton;
    NEIN: TButton;
    StringGrid1: TStringGrid;
    procedure beenden1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    procedure wimageload;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  karten:array[1..32] of TBitmap;
  spieler1:array[0..9] of Integer;
  spieler2:array[0..9] of Integer;
  spieler3:array[0..9] of Integer;
  karten2d,auswahl,richtig: array [0..15,0..15] of integer;
  skat2,skat3:integer;
  dransein:integer;

implementation

{$R *.dfm}

procedure TForm1.wimageload;
var
  i: integer;
begin
  for i:=0 to 31 do
  begin
    karten[i]:=TBitmap.Create;
    karten[i].LoadFromFile(IntToStr(i)+'.bmp');
  end;
end;

procedure TForm1.beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  w: integer;
begin
wimageload;
  for w:=0 to 31 do begin
        stringgrid1.col:=w;
        stringgrid1.Canvas.Draw(karten[w]);
  end;
end;



procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  w: integer;
begin

end;
end.

Ferber 4. Mär 2006 14:07

Re: Skat - Bilder in Stringgrid einfügen
 
Hi !

So funzts:
Delphi-Quellcode:
procedure TForm1.wimageload;
var
  i: integer;
begin
  for i:=1 to 32 do
  begin
    karten[i]:=TBitmap.Create;
    karten[i].LoadFromFile(IntToStr(i)+'.bmp');
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  wimageload;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  stringgrid1.Canvas.Draw(rect.left, rect.top, Karten[ACol+1]);
end;
Du könntest die Bitmaps auch als Resourcen speichern, siehe dazu den DBNavigator.
:)

tankm26 11. Mär 2006 16:12

Re: Skat - Bilder in Stringgrid einfügen
 
Ich hätte gerne in ein Memofeld geschrieben, wie spät es zum Zeitpunkt des Starts des Programmes war.

Trotz Suche in diesem und anderen Foren habe ich keine Lösung gefunden.


Die Zeit soll unter form.create ins memofeld eingefügt werden.


Wer kann mir hiermit helfen?

Quelltext:

Delphi-Quellcode:
unit skat1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ScktComp, StdCtrls, Grids, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    MainMenu1: TMainMenu;
    start1: TMenuItem;
    neuerunde1: TMenuItem;
    beenden1: TMenuItem;
    hilfe1: TMenuItem;
    regeln1: TMenuItem;
    reglnfrdeppen1: TMenuItem;
    regelnfrleutediezudooffrsaktsind1: TMenuItem;
    JA: TButton;
    NEIN: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    spieler_2: TLabel;
    spieler_3: TLabel;
    Image1: TImage;
    aus: TBitBtn;
    Chatfenster: TMemo;
    procedure beenden1Click(Sender: TObject);
    procedure Chrgeben;
    procedure FormCreate(Sender: TObject);
    procedure sreihenfolge;
    procedure wimageload;
    procedure JAClick(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure ausClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  karten:array[0..31] of TBitmap;
  nummern:array[0..31]of Integer;
  spieler1:array[0..9] of Integer;
  spieler2:array[0..9] of Integer;
  spieler3:array[0..9] of Integer;
  skat2,skat3, dransein, sgeben, shoeren, ssagen:integer;

implementation

{$R *.dfm}

procedure TForm1.beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Chrgeben;
var
 i, x, j : integer;
 begin
 Randomize;
  for i:= 0 to 31 do
  begin
    j:=Random(31);
    X:=nummern[i] ;
    nummern[i]:= nummern[j];
    nummern[j]:=x;
  end;

  for i:=0 to 9 do
  spieler1[i]:=nummern[i];
  for i:=0 to 9 do
  spieler2[i]:=nummern[i+10];
  for i:=0 to 9 do
  spieler3[i]:=nummern[i+20];
  skat2:=nummern[30];
  skat3:=nummern[31];

  for i:=0 to 8 do
  begin
    for j:=i+1 to 9 do
    begin
      if spieler1[j] < spieler1[i] then
      begin
      x:=spieler1[i];
      spieler1[i]:=spieler1[j];
      spieler1[j]:=x;
      end;
    end;
  end;

   for i:=0 to 8 do
  begin
    for j:=i+1 to 9 do
    begin
      if spieler2[j] < spieler2[i] then
      begin
      x:=spieler2[i];
      spieler2[i]:=spieler2[j];
      spieler2[j]:=x;
      end;
    end;
  end;

   for i:=0 to 8 do
  begin
    for j:=i+1 to 9 do
    begin
      if spieler3[j] < spieler3[i] then
      begin
      x:=spieler3[i];
      spieler3[i]:=spieler3[j];
      spieler3[j]:=x;
      end;
    end;
  end;
end;

procedure TForm1.wimageload;
var
  i: integer;
begin
  for i:=0 to 31 do
  begin
    karten[i]:=TBitmap.Create;
    karten[i].LoadFromFile(IntToStr(i)+'.bmp');
  end;
end;

procedure TForm1.sreihenfolge;
begin
  if sgeben=3 then
    sgeben:=1
  else
    sgeben:=sgeben+1;
  if shoeren=3 then
    shoeren:=1
  else
    shoeren:=shoeren+1;
  if ssagen=3 then
    ssagen:=1
  else
    ssagen:=ssagen+1;
  if sgeben=3 then
    dransein:=1
  else
    dransein:=sgeben+1;
end;

procedure TForm1.FormCreate(Sender: TObject);
var chr3:integer;
begin
  for chr3:= 0 to 31 do
    nummern[chr3]:=chr3;
    chrgeben;
  sgeben:=1;
  shoeren:=2;
  ssagen:=3;
  wimageload;
  sreihenfolge;
  chatfenster.Lines.Add('Spielbeginn'+'w');
end;

procedure TForm1.JAClick(Sender: TObject);
var chr4:integer;
begin
chrgeben;
stringgrid1.Refresh;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var c:integer;
begin

for c := 0 to 31 do
begin
if spieler1[Acol]=c then
stringgrid1.Canvas.Draw(rect.left, rect.top, Karten[c]);
end;
end;

procedure TForm1.ausClick(Sender: TObject);
begin
close;
end;

end.



mfg

Wieland


P.S.: Kann man eigentlich den Titel eines Themas nachträglich ändern? Wenn ja, wie?

Nikolas 11. Mär 2006 16:40

Re: Skat - Bilder in Stringgrid einfügen
 
Zitat:

Ich hätte gerne in ein Memofeld geschrieben, wie spät es zum Zeitpunkt des Starts des Programmes war.
Die Programmierer der Befehle haben ihnen meistens sinnvolle Namen gegeben. Hier hast du eine Zeit (Time) und willst daraus einen String machen. Wenns IntToStr und Floattostr gibt, wars nur logisch auch den Befehl DateToStr zu bauen. Also einfach
Delphi-Quellcode:
Memo.lines.add(timetostr(now);
Das geht natürlich auch mit einem Datum. (Date)

Den Titel ändern kannst du, indem du das erste Post editierst. (Button oben rechts)

tankm26 11. Mär 2006 18:31

Re: Skat - Bilder in Stringgrid einfügen
 
Danke!

tankm26 11. Mär 2006 19:04

Re: Skat - Bilder in Stringgrid einfügen
 
Liste der Anhänge anzeigen (Anzahl: 1)
jetzt frage ich mich, wie ich die karten sortieren kann. Als Beispiel/Anleitung für mich erführe ich gerne, wie man die Buben nach rechts sortieren lassen könnte (mittels Button).


Danke schonmal,


Wieland


Quelltext:

Delphi-Quellcode:

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    MainMenu1: TMainMenu;
    start1: TMenuItem;
    neuerunde1: TMenuItem;
    beenden1: TMenuItem;
    hilfe1: TMenuItem;
    regeln1: TMenuItem;
    reglnfrdeppen1: TMenuItem;
    JA: TButton;
    NEIN: TButton;
    gridspieler1: TStringGrid;
    gridspieler2: TStringGrid;
    gridspieler3: TStringGrid;
    spieler_2: TLabel;
    spieler_3: TLabel;
    Image1: TImage;
    aus: TBitBtn;
    Chatfenster: TMemo;
    gridskat: TStringGrid;
    labelSkat: TLabel;
    buttonsortiere: TButton;
    procedure beenden1Click(Sender: TObject);
    procedure Chrgeben;
    procedure FormCreate(Sender: TObject);
    procedure sreihenfolge;
    procedure wimageload;
    procedure JAClick(Sender: TObject);
    procedure gridspieler1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure ausClick(Sender: TObject);
    procedure buttonsortiereClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  karten:array[0..31] of TBitmap;
  nummern:array[0..31]of Integer;
  spieler1:array[0..9] of Integer;
  spieler2:array[0..9] of Integer;
  spieler3:array[0..9] of Integer;
  skat2,skat3, dransein, sgeben, shoeren, ssagen, spiel:integer;

implementation

{$R *.dfm}

procedure TForm1.beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Chrgeben;
var
 i,x,j:integer;
begin
  Randomize;
  for i:= 0 to 31 do
  begin
    j:=Random(31);
    X:=nummern[i] ;
    nummern[i]:= nummern[j];
    nummern[j]:=x;
  end;
  for i:=0 to 9 do begin
    spieler1[i]:=nummern[i];
    spieler2[i]:=nummern[i+10];
    spieler3[i]:=nummern[i+20];
  end;
  skat2:=nummern[30];
  skat3:=nummern[31];
  for i:=0 to 8 do
  begin
    for j:=i+1 to 9 do
    begin
      if spieler1[j] < spieler1[i] then begin
        x:=spieler1[i];
        spieler1[i]:=spieler1[j];
        spieler1[j]:=x;
      end;
      if spieler2[j] < spieler2[i] then begin
        x:=spieler2[i];
        spieler2[i]:=spieler2[j];
        spieler2[j]:=x;
      end;
      if spieler3[j] < spieler3[i] then begin
        x:=spieler3[i];
        spieler3[i]:=spieler3[j];
        spieler3[j]:=x;
      end;
    end;
  end;
end;

procedure TForm1.wimageload;
var
  i: integer;
begin
  for i:=0 to 31 do
  begin
    karten[i]:=TBitmap.Create;
    karten[i].LoadFromFile(IntToStr(i)+'.bmp');
  end;
end;

procedure TForm1.sreihenfolge;
begin
  if sgeben=3 then
    sgeben:=1
  else sgeben:=sgeben+1;
  if shoeren=3 then
    shoeren:=1
  else shoeren:=shoeren+1;
  if ssagen=3 then
    ssagen:=1
  else ssagen:=ssagen+1;
  if sgeben=3 then
    dransein:=1
  else dransein:=sgeben+1;
end;

procedure TForm1.FormCreate(Sender: TObject);
var chr3:integer;
begin
  for chr3:= 0 to 31 do
    nummern[chr3]:=chr3;
  chrgeben;
  sgeben:=1;
  shoeren:=2;
  ssagen:=3;
  wimageload;
  sreihenfolge;
  chatfenster.Lines.Add('Spielbeginn:  '+(timetostr(now)));
end;

procedure TForm1.JAClick(Sender: TObject);
begin
  chrgeben;
  gridspieler1.Refresh;
end;

procedure TForm1.gridspieler1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var c:integer;
begin
  for c := 0 to 31 do begin
    if spieler1[Acol]=c then
      gridspieler1.Canvas.Draw(rect.left, rect.top, Karten[c]);
  end;
end;

procedure TForm1.ausClick(Sender: TObject);
begin
  close;
end;

procedure TForm1.buttonsortiereClick(Sender: TObject);
var w,w2,w3,w4,w5:integer;
begin
end;
  { if spiel=1 then begin
    for w:=9 downto 0 do begin
      if gridspieler1 [w] =5 then begin
        w2:=w;
        w3:=5;
        gridspieler1[w]:=5;
        gridspieler1[w2]:=
      end;
    end;
  end;}
end.

Nikolas 11. Mär 2006 20:47

Re: Skat - Bilder in Stringgrid einfügen
 
Bei einer neuen Frage solltest du auch einen neuen Thread anfangen, sonst findet man später nichts wieder. Über die Forensuche hättest du z.B. Daniels Sortier-Tutorial gefunden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.

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