AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeiten mit mehreren Formularen

Ein Thema von sanobub · begonnen am 23. Aug 2004 · letzter Beitrag vom 23. Aug 2004
Antwort Antwort
sanobub

Registriert seit: 15. Jul 2004
9 Beiträge
 
#1

Re: Arbeiten mit mehreren Formularen

  Alt 23. Aug 2004, 19:17
Hallo,
nun gibts Quellcodefetzen zum besseren Verständnis! Also ich würde da nicht durchsteigen an eurer Stelle Aber wers sich antun möchte, kann das natürlich gerne!

Meine Frage nach wie vor:
Zitat:
Warum mir das so fraglich erscheint kommt daher, weil TSpielfeld von TPanel vererbt wird und das erzuegte Objekt auf Form2 liegt. Darf TSpielfeld dann selbst auf Unit2 und damit auch auf Form2 und dessen Komponeten zugreifen?
Delphi-Quellcode:
unit Unit1;

interface

uses Unit2, Unit3, Spielfeld, Spielregel;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  end;

var
  Form1: TForm1;
  Spielfeld1: TSpielfeld;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Spielfeld1:= TSpielfeld.Einrichten(Self, Spielregel); //Spielregel ist globale Variable in Unit3
  Form2.Show;
end;

end.
Form2 als nacktes Formular!

Delphi-Quellcode:
unit Unit2;

interface

type
  TForm2 = class(TForm)
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.
Delphi-Quellcode:
unit Spielfeld;

interface

uses Unit2, Schiffe, Felder, Spielregel;

type
  TSpielfeld = class(TPanel)
  public
    constructor Einrichten(aMainFrame : TForm; aSpielregel : TSpielregel);
    procedure NewSchiff(aSchiff : TSchiff);
    procedure AutoSchiffCreate;
    procedure Show;
    function Angriff(ax_cor, ay_cor : word) : integer;
    function IsFeldInUse(aFeld : TFeld) : TSchiff;
    procedure OnFeldMouseDown(Sender: Tobject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure OnFeldMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure OnFeldEndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure OnFeldDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure OnFeldDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
  private
    Feld: array of array of TFeld;
    Schiff : array of TSchiff;
    Schiff_neu : TSchiff;
    Schiff_anz : word;
    Regel : TSpielregel;
  end;

implementation

constructor TSpielfeld.Einrichten(aMainFrame : TForm; aSpielregel : TSpielregel);
var a,b : integer;
begin
  inherited Create(Form2);
  Parent := Form2;
  Regel := aSpielregel;
  Regel.Show(Form2.StringGrid1);

  //Spiefeld-Aussehen
  Left := 50;
  Top := 50;
  Color := clwhite;
  BevelOuter := bvnone;
  BevelInner := bvnone;
  Width := Regel.Feldgroesse * Regel.felder_x;
  Height := Regel.Feldgroesse * Regel.Felder_y;

  // Aussehen Form2
  Form2.StringGrid1.Left := Self.Left + Self.Width + 20;
  Form2.Memo1.Width := Self.Left + Self.Width - Form2.Memo1.Left;
  Form2.edit5.Width := Self.Left + Self.Width - Form2.Edit5.Left;
  Form2.Memo1.Top := Self.top + Self.height + 20;
  Form2.Edit5.Top := Form2.Memo1.Top + Form2.Memo1.Height + 5;

  // ClientHeight/Width gibt die tatsächliche Nutzfläche eines Formulars an!
  Form2.ClientHeight := Form2.Edit5.Top + Form2.Edit5.Height;
  Form2.ClientWidth := 2 * Self.Left + Self.Width + Form2.StringGrid1.Width;

  SetLength(Feld,Regel.felder_x+1,Regel.felder_x+1);
  for a := 1 to Regel.felder_x do
    for b := 1 to Regel.felder_y do
      begin
        Feld[a,b] := TFeld.Erstellen(Self, Regel.Feldgroesse, a,b);
        Feld[a,b].OnMouseDown := OnFeldMouseDown;
        Feld[a,b].OnMouseMove := OnFeldMouseMove;
        Feld[a,b].OnDragOver := OnFeldDragOver;
        Feld[a,b].OnDragDrop := OnFeldDragDrop;
        Feld[a,b].OnEndDrag := OnFeldEndDrag;
      end;
end;
  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 12:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz