Avatar billede jakob/cosmo Nybegynder
12. februar 2002 - 18:16 Der er 6 kommentarer og
3 løsninger

Procedure fra 1 til 2

Hej alle nu har jeg virkelig brug for hjælp;

Problemmet er det at jeg ikke kan finde ud af hvordan jeg laver en procedure der ændre en TEdit's Text fra en anden unit kaldet eventu.
Jeg skal alså henvise til en procedure i uniten kaldet gui fra uniten eventu.

EVENTU:

unit eventu;

interface

uses CardClasses,CardFkt;

  procedure ProgInit;
  procedure NewGame;
  procedure MouseDown(Pile: TPile; Card: TCard);
  procedure MouseUp(Pile: TPile; Card: TCard);


implementation

uses dialogs,sysutils;

procedure ProgInit;
begin
end;

procedure NewGame;
begin
end;

procedure MouseDown(Pile: TPile; Card: TCard);
begin
   
end;

procedure MouseUp(Pile: TPile; Card: TCard);
begin
end;

end.





OG GUI:

unit gui;

interface

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

type
  TFrmBord = class(TForm)
    Edit1: TEdit;
    procedure FormPaint(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Afslut1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Afslut2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure EraseRect(HFillrect,VFillRect: TRect);
    procedure DrawEmptyPile(aType: integer;x1,y1: integer);
    procedure CardDrawInverted(x,y,CardNr: integer);
    procedure CardDraw(x,y,CardNr: integer);
    procedure BackDraw(x,y,BackNr: integer);
  end;

var
  FrmBord: TFrmBord;

implementation

{$R *.DFM}

uses cardclasses, cardFkt, Eventu;

procedure TFrmBord.EraseRect(HFillrect,VFillRect: TRect);
begin
  Canvas.brush.Color:=Color;
  Canvas.FillRect(HFillRect);
  Canvas.FillRect(VFillRect);
end;

procedure TFrmBord.DrawEmptyPile(aType: integer;x1,y1: integer);
const d=5;
var i: integer;
begin
  case aType of
    1: _BackDraw(Canvas,x1,y1,14);
    2: _BackDraw(Canvas,x1,y1,13);
    else
      Canvas.Pen.Color:=clLime;
      for i:=0 to 1 do
        Canvas.RoundRect(x1+i,y1+i,x1+CardWidth-i,y1+CardHeight-i,d,d);
  end
end;

procedure TFrmBord.CardDrawInverted(x,y,CardNr: integer);
begin
  _CardDrawInverted(FrmBord.Canvas,x,y,CardNr);
end;

procedure TFrmBord.CardDraw(x,y,CardNr: integer);
begin
  _CardDraw(FrmBord.Canvas,x,y,CardNr);
end;

procedure TFrmBord.BackDraw(x,y,BackNr: integer);
begin
  _BackDraw(FrmBord.Canvas,x,y,BackNr);
end;

procedure TFrmBord.FormPaint(Sender: TObject);
begin
  CTable.Refresh;
end;

procedure TFrmBord.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p: TPile; c: TCard;
begin
  CTable.GetPileCardAt(x,y,p,c);
  if p<>nil then Eventu.MouseDown(p,c);
end;

procedure TFrmBord.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var p: TPile; c: TCard;
begin
  CTable.GetPileCardAt(x,y,p,c);
  if p<>nil then Eventu.MouseUp(p,c);
end;


end.
Avatar billede jakob/cosmo Nybegynder
12. februar 2002 - 18:17 #1
HHHHHJJJJJJJJJJÆÆÆÆÆÆÆLLLLLLLLPPPP;-(:-(
Avatar billede freeall Nybegynder
12. februar 2002 - 18:33 #2
Jeg er ikke sikker på hvad du mener, men måske er det noget i retningen af dette:

procedure ChangeText(Edit: TEdit; Text: string);
begin
  Edit.Text := Text;
end;

Ellers må du lige skrive det lidt mere præcist, jeg forstod hvertfald ikke helt hvad du mente.
Avatar billede freeall Nybegynder
12. februar 2002 - 18:36 #3
Eller også er det det her du mener:
I eventu skal du efter implementation ændre så der kommer til at stå:
---
implementation

uses dialogs,sysutils,gui;
---
Så skulle du nu kunne bruge gui.procedure. Prøv det:)
Avatar billede jhc Nybegynder
12. februar 2002 - 18:47 #4
Jeg ville nok lave en funktion som retunerede til den kaldne unit - tilgang af komponenter fra andre forme er noget rod.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,    Forms,Dialogs,unit2, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.text := SkrivTekst;
end;

end.
____________________________________

unit Unit21;

interface

function SkrivTekst : String;

implementation
Function SkrivTekst : string;
begin
  Result := 'HEJ';
end;
end.
Avatar billede jhc Nybegynder
12. februar 2002 - 18:52 #5
Unit 21 skal rettes til unit2

Hvis du vil kalde noget i form1 fra formX
skriver du blot

Form1.Edit1.Text := 'HEJ';(Det fungere - men noget rod)
Avatar billede jakob/cosmo Nybegynder
12. februar 2002 - 22:10 #6
>>>>freeall
jeg mener at på min unit kaldet eventu vil henvise til en procedure i gui, fordi at i eventu kan jeg ikke bruge de andre komponenter.

>>>>jhc
jeg det er det jeg mener.
men det med TEditten var bare et ekssempel hvordan kan jeg gøre det med alle andre komponenter Memo,Label,knapper etc.
Avatar billede jhc Nybegynder
13. februar 2002 - 10:57 #7
Altså jeg ved ikke rigtig hvilken hjælp som jeg skal give dig.
En god ting er at kigge i hjælpe filen

men de gør alle enten brug af propertien

"Text"  eller "Caption" eller hvis der er tale om flere linier felt så "Lines.Add(Streng)"


Text bruges af alle komponenter som er synlige for brugeren men brugeren ikke kan indtaste data i. - eks. knapper,panel osv. Text bruges af komponenter som man kan indtaste data i - eks. Edit felter osv. Memo bruger "lines.add" - eks. memo1.lines.add('HEJ').

Eksempel på brug af memo1

If (Opendialog1.execute) then
  Memo1.Lines.LoadFromFile(OPendialog1.filename);
Henter fra fil til memo
Avatar billede jakob/cosmo Nybegynder
13. februar 2002 - 11:58 #8
i forstår ikke hvad jeg mener jeg trækker mig

:(
Avatar billede freeall Nybegynder
13. februar 2002 - 15:40 #9
Prøv at spørge på en anden måde
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester