Newsgroup: it.comp.lang.delphi
Titolo: Problema con inputbox

guardando l'Help in linea di delphi 7 per l'utilizzo della funzione
inputbox ho trovato queste indicazioni
dialog and message routines
Delphi syntax:
function InputBox(const ACaption, APrompt, ADefault: string): string;
function InputBox(const ACaption, APrompt, ADefault: WideString ):
WideString; overload;
function InputBox(const ACaption, APrompt: WideString ; ADefault:
Double; Min: Double = Low(Integer); Max: Double = High(Integer);
Decimals: Integer = 1): Double; overload;
function InputBox(const ACaption, APrompt: WideString; ADefault:
Integer; Min: Integer = Low(Integer); Max: Integer = High(Integer);
Increment: Integer = 1): Integer; overload;
visto che faceva perfettamente al mio caso ho provato a utilizzare la
quarta opzione ma mi ha dato un errore di sintassi infatti sono andato
a guardare la unit Dialogs ed è implementata solo la prima. Sapete
dirmi perchè grazie Brunello.

 dirmi perchč grazie Brunello.
non saprei dirti il perchč non č stata implementata, perň non ci vuole 
molto a crearti una cosa del genere ("incapsulare" una form in una 
funzione). Ti ho buttato giů qui due righe di codice per farti vedere come 
ottenere una semplice funzione di questo genere.
Si tratta di una form con una Label e un Edit, che poi viene mostrata 
chiamando una procedura. Viene restituito anche un valore digitato 
dall'utente. 
Il sorgente di Project1.dpr č
//***************************************
program Project1;
uses
  Forms, Dialogs,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var
  i: Integer;
begin
  i := 0;
  ExecuteMyDialogBox('Immetti qui il valore', i);
  ShowMessageFmt('Il valore č: %d', [i]);
end.
Quello della form č 
//*******************************************
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
  Dialogs, StdCtrls;
type
  TMyDialogBox = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
  private
    function GetTitle: string;
    procedure SetTitle(const Value: string);
    function GetDialogText: string;
    procedure SetDialogText(const Value: string);
    function GetValue: Integer;
    procedure SetValue(const Value: Integer);
    { Private declarations }
  public
    property Title: string read GetTitle write SetTitle;
    property DialogText: string read GetDialogText write SetDialogText;
    property Value: Integer read GetValue write SetValue;
  end;
procedure ExecuteMyDialogBox(const DialogText: string; var A: Integer; 
const Title: string = '');
implementation
{$R *.dfm}
procedure ExecuteMyDialogBox(const DialogText: string; var A: Integer; 
const Title: string = '');
var
  MyDialogBox: TMyDialogBox;
begin
  MyDialogBox := TMyDialogBox.Create(nil);
  try
    if Title = '' then MyDialogBox.Title := '(senza titolo)' else 
MyDialogBox.Title := Title;
    MyDialogBox.DialogText := DialogText;
    MyDialogBox.Value := A;
    MyDialogBox.ShowModal;
    A := MyDialogBox.Value;
  finally
    MyDialogBox.Free
  end;
end;
function TMyDialogBox.GetDialogText: string;
begin
  Result := Label1.Caption
end;
function TMyDialogBox.GetTitle: string;
begin
  Result := Caption
end;
function TMyDialogBox.GetValue: Integer;
begin
  Result := StrToIntDef(Edit1.Text, 0);
end;
procedure TMyDialogBox.SetDialogText(const Value: string);
begin
  Label1.Caption := Value
end;
procedure TMyDialogBox.SetTitle(const Value: string);
begin
  Caption := Value
end;
procedure TMyDialogBox.SetValue(const Value: Integer);
begin
  Edit1.Text := IntToStr(Value)
end;
end.
-- 
Mauro Falzari
"E' l'orribile filo di una stoffa
intessuta di cavi e gomene.
Attraversato da un vento polare,
sorvolato da uccelli rapaci".
  (Herman Melville, in "Moby Dick", Londra 1851)

Grazie per la collaborazione provo subito questo codice, Brunello

>[...]
una curiosita', hai dichiarato la procedure ExecuteMyDialogBox esterna alla
sezione public , casa cambia ?
Maurizio 

 alla sezione public , casa cambia ?
che così facendo, esporto la procedura ExecuteMyDialogBox al di fuori della 
unit Unit1; in altre parole la procedura diventa pubblica cioè utilizzabile 
in qualunque altra unit che includa Unit1 nella propria clausola uses
-- 
Mauro Falzari
"Sbirro gagliardo, sbirro vegliardo".
  (Stephen King, ne "L'Acchiappasogni", 2001)

 Grazie per la collaborazione provo subito questo codice, Brunello
prego, ho solo voluto lanciarti l'idea, per esempio mancano i bottoni OK e 
Annulla (vedi anche TButton.ModalResult, e se guardi ShowModal restituisce 
un Integer...)
