witam,
jak w temacie mam problem z polami Edit w Delphi. Zaznaczam, że jestem początkującym programistą i robię wszystko na czuja, niestety...
Za zadanie miałam napisać kalkulator z klawiaturką i dwoma Editami (jeden dla zmiennej a drugi dla zmiennej b). Jak się można domyśleć wartości w pole Edit1 i Edit2 maja być wprowadzane z tej klawiaturki. Wydawałoby się proste, jednak po napisaniu procedury, jaką nam podano na zajęciach i uruchomieniu, wypełnia mi tylko pole Edit2, zamiast zacząć od pola Edit1 i po kliknięciu w pole Edit2 wypełniać pole Edit2 (bo taki był zamiar).
Robiłam modyfikacje procedury, jednak wypełniało mi wtedy tylko z kolei pole Edit1, a mimo kliknięcia w pole Edit2 i mrugającego tam kursora nadal wypełniało pole Edit1 a Edit2 pozostawało puste :/.
Inna modyfikacja w rezultacie wypełniała oba pola na raz. Nie wiem co robię źle, nie wiem czemu podany przez prowadzącego kod nie działa. Niestety zajęcia wyglądają jak wyglądają i do wszystkiego musimy dochodzić sami a w necie na ten temat nic nie znalazłam. Proszę o pomoc
mój kod dla grupy Buttonów (klawiaturki) wygląda tak:
procedure TForm1.Button3Click(Sender: TObject);
var
ak: integer ;
s : string;
begin
if sender=Edit1 then
ak:=1
else
ak:=2;
if ak=1 then
s:=Edit1.Text
else
s:=Edit2.Text;
s:=s+TButton(sender).Caption;
if ak=1 then
Edit1.Text:=s
else
Edit2.Text:=s
end;
w razie potrzeby wkleję więcej. Dzięki
problem z Delphi..dwa pola Edit w Kalkulatorze
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
problem z Delphi..dwa pola Edit w Kalkulatorze
Problem tkwi w tym że sender przy kliknięciu przycisku odnosi się do tego przycisku a nie do pola edit.
Logicznie należałoby więc stworzyć procedurę która ustali aktywny edit przy wejściu lub opuszczeniu go przez kursor - zdarzenia OnEnter lub OnExit.
Potem procedurę podczepiamy do obu editów.
Natomias wszytskim buttonom do zdarzenia OnClick podczepiamy procedurę ButtonClick.
Przykładowo
Logicznie należałoby więc stworzyć procedurę która ustali aktywny edit przy wejściu lub opuszczeniu go przez kursor - zdarzenia OnEnter lub OnExit.
Potem procedurę podczepiamy do obu editów.
Natomias wszytskim buttonom do zdarzenia OnClick podczepiamy procedurę ButtonClick.
Przykładowo
Kod: Zaznacz cały
unit calc01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure OnFocusGaind(Sender: TObject);
procedure ButtonClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
aktualny_edit : TObject;
implementation
{$R *.dfm}
procedure TForm1.ButtonClick(Sender: TObject);
begin
(aktualny_edit as TEdit).Text := (aktualny_edit as TEdit).Text + (Sender as TButton).Caption;
(aktualny_edit as TEdit).SetFocus;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
aktualny_edit := Edit1; // Ustwienie wartości poczatkowej
end;
procedure TForm1.OnFocusGaind(Sender: TObject);
begin
aktualny_edit := Sender;
end;
end.
Kod: Zaznacz cały
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 294
ClientWidth = 562
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Edit1: TEdit
Left = 80
Top = 32
Width = 121
Height = 21
TabOrder = 0
OnEnter = OnFocusGaind
end
object Edit2: TEdit
Left = 224
Top = 32
Width = 121
Height = 21
TabOrder = 1
OnEnter = OnFocusGaind
end
object Button1: TButton
Left = 96
Top = 72
Width = 25
Height = 25
Caption = '1'
TabOrder = 2
OnClick = ButtonClick
end
object Button2: TButton
Left = 127
Top = 72
Width = 25
Height = 25
Caption = '2'
TabOrder = 3
OnClick = ButtonClick
end
object Button3: TButton
Left = 158
Top = 72
Width = 25
Height = 25
Caption = '3'
TabOrder = 4
OnClick = ButtonClick
end
end
-
- Użytkownik
- Posty: 2
- Rejestracja: 20 paź 2008, o 15:59
- Płeć: Kobieta
- Lokalizacja: Zamość
- Podziękował: 1 raz
problem z Delphi..dwa pola Edit w Kalkulatorze
Dzięki wielkie w końcu zadziałało jak trzeba . Brakowało mi dokładnie tego co napisałeś głównie zdarzenia OnEnter/OnExit:).
Pozdrawiam
Pozdrawiam