/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
returnering af strenge fra edit controls v~
Fra : Bjarne Torhus


Dato : 14-04-02 14:31

Delphi

jeg har en dialogboks i en unit1.
Iunit2 aktiveres en procedure der dynamisk opretter (showmodal) og
lukker (free) dialogboksen fra unit1.
strengen fra en edit control i dialogboksen hentes over i en variabel
(defineret i unit2) v.h.a. en funktion i dialogboks objektet i unit1.

Problemet er at i det øjeblik dialogboksen fjernes fra hukommelsen
(free), indeholder variablen i unit 2 ikke længere strengen fra edit
controllen.

Hvordan overfører man en streng fra en editcontrol i en dynamisk
dialogboks uden at miste strengen når dialogboksen lukkes (free)?

Jeg har kun delphi personal versionen og har derfor ikke mulighed for
at se i koden til InputQuery functionen.




 
 
David A. D. Konrad (16-04-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 16-04-02 13:41

"Bjarne Torhus" <btorhus@worldonline.dk> skrev i en meddelelse

> Problemet er at i det øjeblik dialogboksen fjernes fra hukommelsen
> (free), indeholder variablen i unit 2 ikke længere strengen fra edit
> controllen.

Kopier editboksens tekstfelt over i result på din funktion, f.eks sådan her

function getStringViaModalForm:string;
var F:TDinStringInputForm;
begin
try
F:=TDinStringInputForm.create(nil);
F.showmodal;
if F.modalresult=mrOk then result:=F.edit1.text;
finally
F.free;
end;
end;

> Jeg har kun delphi personal versionen og har derfor ikke mulighed for
> at se i koden til InputQuery functionen.

Den ser således ud, hvis du vil gøre noget lignende - det ovenståeende er
dog lige så godt, og du kan jo customisere formen, have et billede på den
eller lignende...

function InputQuery(const ACaption, APrompt: string; var Value: string):
Boolean;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := False;
Form := TForm.Create(Application);
with Form do
try
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Position := poScreenCenter;
Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
Caption := APrompt;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
WordWrap := True;
end;
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := Prompt.Top + Prompt.Height + 5;
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := Value;
SelectAll;
end;
ButtonTop := Edit.Top + Edit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent := Form;
Caption := SMsgDlgOK;
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := SMsgDlgCancel;
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15,
ButtonWidth, ButtonHeight);
Form.ClientHeight := Top + Height + 13;
end;
if ShowModal = mrOk then
begin
Value := Edit.Text;
Result := True;
end;
finally
Form.Free;
end;
end;




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste