AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Skat - Bilder in Stringgrid einfügen
Thema durchsuchen
Ansicht
Themen-Optionen

Skat - Bilder in Stringgrid einfügen

Ein Thema von tankm26 · begonnen am 4. Mär 2006 · letzter Beitrag vom 11. Mär 2006
Antwort Antwort
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#1

Skat - Bilder in Stringgrid einfügen

  Alt 4. Mär 2006, 12:23
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.
Angehängte Dateien
Dateityp: zip das_skatprogramm_mit_bilderversuch_118.zip (273,4 KB, 30x aufgerufen)
Wieland S.
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Skat - Bilder in Stringgrid einfügen

  Alt 4. Mär 2006, 15:07
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.
Otto
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#3

Re: Skat - Bilder in Stringgrid einfügen

  Alt 11. Mär 2006, 17:12
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?
Wieland S.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Skat - Bilder in Stringgrid einfügen

  Alt 11. Mär 2006, 17:40
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
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)
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#5

Re: Skat - Bilder in Stringgrid einfügen

  Alt 11. Mär 2006, 19:31
Danke!
Wieland S.
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#6

Re: Skat - Bilder in Stringgrid einfügen

  Alt 11. Mär 2006, 20:04
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.
Angehängte Dateien
Dateityp: zip feinere_fertige_version_1_205.zip (298,9 KB, 26x aufgerufen)
Wieland S.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Skat - Bilder in Stringgrid einfügen

  Alt 11. Mär 2006, 21:47
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 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