Newsgroup: it.comp.lang.delphi
Titolo: MDI - Conoscere Tasto premuto in Form Child

Salve a tutti,
Qualcuno sa indicarmi in che modo la form Main di un'applicazione MDI sa
quali sono i tasti premuti dalle form child? Senza scriver codice in esse,
ovviamente!
Mi sa che non è possibile, ma se qualc'uno avesse un'idea....
Grazie mille,
Davide

 ha scritto:

L'evento OnKeyDown ti dice quale tasto è stato premuto in una form.
Una variabile Private (che poi diviene Public) o locale nella MainForm può
essere settata dentro il Metodo OnKeyDown per avere l'informazione che
cerchi.
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 cerchi.
In questo modo devo pero' scrivere codice in ogni child form, io speravo di
scrivere solo nella form "contenitore", la main.
Credo che quello che chiedo sia pero concettualmente inattuabile, perche una
volta creata una form e' lei che risponde ai propri eventi, non un'altra, a
meno che non sia anch'essa sempre attiva e vigile, in memoria, in un
processo separato, giusto???
Davide

 processo separato, giusto???
Potresti aggiugere alla tua form child un evento che scateni nella key
press/down o up e che viene poi gestito nella form principale.
Un altra soluzione può essere quella di creare un tuo messaggio e poi usare
la PostMessage per comunicare con la form principale
-- 
Lis
ICQ@Home #7317603sette     ICQ@Work #16285702tre
Mercatino: 
http://lis77.bravepages.com
 (aggiornato *con foto*: 16/06/03)

 ha scritto:

Io non ho ben capito cosa chiedi comunque io so per mia esperienza che,
bensì Word e Excel et altri programmi della microsoft utilizzino classi MDI
delphi non è stato scritto con le stesse classi perchè quelle utilizzate da
Microsoft non sono
state Pubblicate.
Ossia non sono supportate da file di Help o manuali.
Ai tempi della versione 2 o 3 si sconsigliava di usare form MDI per progetti
di medie o grandi dimensioni.
Non so adesso come sia la situazione in quanto da un anno circa la mia unica
fonte di informazioni sono i NewsGroup come questo.
In un situazione diversa non mi sembra ci siano problemi in quanto io ho
creato 2 unit la Uni1 dove è definita la variabile Public Chiave che
contiene (il tasto premuto sulla unit2, l'evento OnKeyDown):
La unit2 cattura il tasto premuto che è presente nella variabile Chiave
della unit1.
Dopo aver utilizzato Chiave (ddall Unit1) è sempre meglio settare a Zero la
variabile.
Ciao
P.S. ti allego i 2 Files.
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit2;
type
  TForm1 = class(TForm)
    procedure FormClick(Sender: TObject);
  private
    { Private declarations }
  public
     Chiave : String ;
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormClick(Sender: TObject);
begin
  Form2. ShowModal ;
  ShowMessage ('In form1 ' + Form1.Chiave) ;
  Chiave := Chr(0) ;
  ShowMessage ('In form1 a 0' + Form1.Chiave) ;
end;
end.
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm2 = class(TForm)
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift:
TShiftState);
begin
  Form1.Chiave := Chr ( Key ) ;
  ShowMessage ( 'in form2 ' + Form1.Chiave ) ;
end ;
end.
