/ 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
Endnu et spørgsmål....
Fra : Izeqb


Dato : 19-12-00 12:34

Uhadada, som jeg stiller spørgsmål idag

Jeg har et dbedit felt.
Jeg vil gerne have det sådan, at hvis man skriver f.eks 1, så skal den selv
skrive et 0 foran, så resultatet kommer til at se sådan her ud: 01.

Hvordan skal jeg gøre det?

// Hjalte



 
 
Thomas P (19-12-2000)
Kommentar
Fra : Thomas P


Dato : 19-12-00 13:30

Det er lidt svært at tyde hvad baggrunden for spørgsmålet er, så her kommer
bare en løsning der løser præcis det du spurgte om...

procedure TForm1.Edit1Change(Sender: TObject);
begin
if trim(edit1.text) = '1' then
edit1.text := '01';
end;

- Thomas



Hauge (19-12-2000)
Kommentar
Fra : Hauge


Dato : 19-12-00 14:21

Hejsa

"Thomas P" <blomme@post.com> wrote in message
news:91nkbm$3f6$1@news.inet.tele.dk...
> procedure TForm1.Edit1Change(Sender: TObject);
> begin
> if trim(edit1.text) = '1' then
> edit1.text := '01';
> end;

Så mangler vi bare hvis nu at '1' er '2' eller noget andet:

procedure TForm1.Edit1Change(Sender: TObject);
begin
if length(trim(edit1.text)) = 1 then
edit1.text := '0' + edit1.text;
end;

Mvh Hauge



Izeqb (19-12-2000)
Kommentar
Fra : Izeqb


Dato : 19-12-00 14:37

> Så mangler vi bare hvis nu at '1' er '2' eller noget andet:
>
> procedure TForm1.Edit1Change(Sender: TObject);
> begin
> if length(trim(edit1.text)) = 1 then
> edit1.text := '0' + edit1.text;
> end;

Jeg fandt lige ud af, at man også kunne gøre sådan her:

begin
while Length(edit1.text) < 2 do edit1.text := '0' + edit1.text;
End

// Hjalte



Hauge (19-12-2000)
Kommentar
Fra : Hauge


Dato : 19-12-00 14:46

Hejsa

"Izeqb" <izeqb@secret.dk> wrote in message
news:91no8r$1sn6$1@news.cybercity.dk...
> Jeg fandt lige ud af, at man også kunne gøre sådan her:
>
> begin
> while Length(edit1.text) < 2 do edit1.text := '0' + edit1.text;
> End

Det er også rigtigt, men hvad så hvis der er indtastet et mellemrum efter
tallet, så brug stadig 'trim'?

Mvh Hauge



Izeqb (19-12-2000)
Kommentar
Fra : Izeqb


Dato : 19-12-00 15:17

> > Jeg fandt lige ud af, at man også kunne gøre sådan her:
> >
> > begin
> > while Length(edit1.text) < 2 do edit1.text := '0' + edit1.text;
> > End
>
> Det er også rigtigt, men hvad så hvis der er indtastet et mellemrum efter
> tallet, så brug stadig 'trim'?

Hvad mener du?
Det virker da fint selvom der er mellemrum efter ´tallet!

// Hjalte



Thomas P (19-12-2000)
Kommentar
Fra : Thomas P


Dato : 19-12-00 18:24

| Hvad mener du?
| Det virker da fint selvom der er mellemrum efter ´tallet!

mellemrum = karakter
tal = karakter

konklusion = Hauge har ret :)

- Thomas



Thomas Due (20-12-2000)
Kommentar
Fra : Thomas Due


Dato : 20-12-00 08:27

Nu kan jeg altså ikke lade være med at blande mig mere :)
Jeg vil lige komme med yderligere en løsning. Første en operation som
skal påhæftes OnKeyPress eventen.

procedure TForm1.Edit1KeyPress(Sender : TObject; var key : Char);
begin
if not (Key in ['0'..'9', Chr(VK_BACK)]) then
Key := #0;

if Key <> #0 then
inherited KeyPress(Key);
end;

Denne operation sikre at der kun indtastes tal (og backspace). Du kan
stadig bruge 'del' og piletaster.

Dernæst skal vi bruge Thomas' operation, som skal vedhæftes _OnExit_
eventen. Grunden til at det er denne event og ikke OnChange er at
operationen sætter igang efter første karakter er indtastet, og det er ikke
sikkert at det er ønskeligt.

Derfor vil vi skulle bruge en hel masse ressourcer på at kontrollere dette,
istedet for at vente med checket til vi forlader editen.

procedure TForm1.Edit1Exit(Sender : TObject);
Begin
if length(edit1.text) = 1 then
edit1.text := '0' + edit1.text;
end;

Husk at på grund af KeyPress eventen har vi ikke brug for at checke for
mellemrum eller bogstaver. Der er kun tal i edit feltet.

Mvh
Thomas Due



Izeqb (19-12-2000)
Kommentar
Fra : Izeqb


Dato : 19-12-00 13:55

> procedure TForm1.Edit1Change(Sender: TObject);
> begin
> if trim(edit1.text) = '1' then
> edit1.text := '01';
> end;

Tak for alle dine svar på mine spørgsmål

1) Hvad sker der hvis jeg skriver "edit1EXIT" istedet for edit1change?
Bliver det så først udført, når jeg flytter til et andet felt?

2) Det er sådan set rigtigt nok det du skriver, jeg har nok bare ikke
udtrykt mig klart nok.

Min egen version, ikke i pascal sprog, men måske kan du forstå hvad jeg
mener:

If edit.text = 'et ciffer' then
variabel = edit.text;
edit.text = '0'+variabel;

jeg ved ikke om du kan forstå hvad jeg mener, men altså kort fortalt:
Hvis det der står i edit er kun 1 ciffer så skal den gemme værdien i en
variabel.
Derefter skal den skrive '0' og det tal der står i variablen.

Kan man det?

// Hjalte





Thomas P (19-12-2000)
Kommentar
Fra : Thomas P


Dato : 19-12-00 15:59

| 1) Hvad sker der hvis jeg skriver "edit1EXIT" istedet for edit1change?
| Bliver det så først udført, når jeg flytter til et andet felt?

Lige præcis :) Alle events fungerer på den måde at programmet opfanger hvad
der sker og når fx button1 på klikket på, udføres en eventuel procedure der
er vedhæftet button1.onclick.

| 2) Det er sådan set rigtigt nok det du skriver, jeg har nok bare ikke
| udtrykt mig klart nok.
|
| Min egen version, ikke i pascal sprog, men måske kan du forstå hvad jeg
| mener:
|
| If edit.text = 'et ciffer' then
| variabel = edit.text;
| edit.text = '0'+variabel;
|
| jeg ved ikke om du kan forstå hvad jeg mener, men altså kort fortalt:
| Hvis det der står i edit er kun 1 ciffer så skal den gemme værdien i en
| variabel.
| Derefter skal den skrive '0' og det tal der står i variablen.

Pærelet :) Prøv at implementere denne kode...
____________________________________________

Var
Tal : String;

implementation

{$R *.DFM}

procedure TForm1.Edit1Exit(Sender: TObject);
var lengde : integer;
begin
with edit1 do
begin
lengde := length(trim(edit1.text));
if lengde = 1 then
tal := '0'+text;
end;
end;

____________________________________________

- Thomas



Thomas P (19-12-2000)
Kommentar
Fra : Thomas P


Dato : 19-12-00 16:05

Ooops... i programmed WRONG again :)

Nej, jeg kom sådan set bare lige til at se på din assignment og opdagede at
jeg havde glemt noget - ny kode :)

Var
Form1 : Tform;
Tal : String;

implementation

{$R *.DFM}

procedure TForm1.Edit1Exit(Sender: TObject);
var lengde : integer;
begin
with edit1 do
begin
lengde := length(trim(edit1.text));
if lengde = 1 then
begin
tal := text;
text := '0'+text;
end;
end;
end;

- Thomas



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

Månedens bedste
Årets bedste
Sidste års bedste