/ 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
Nemmeste måde til at der kun kan skrives t~
Fra : Hense


Dato : 24-03-08 15:59

Hej,

Hvad er den nemmeste måde til at der kun kan skrives tal i en tekstboks?

MvH. Hense



 
 
Michael Haase (24-03-2008)
Kommentar
Fra : Michael Haase


Dato : 24-03-08 16:27

Hense skrev dette den 24-03-2008 15:58:

>
> Hvad er den nemmeste måde til at der kun kan skrives tal i en tekstboks?
>

1. Brug en TMaskEdit med en passende maske. (Kræver mig bekendt at
tallet har en fast format)

2. Benyt OnKeyPress på komponenten

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

#8 = Tab, #9 = backspace

Hvis du kun har brug for positive heltal, kan du nøjes med
if not(key in ['0'..'9',#8,#9] ) then ....

--
Michael Haase

Hense (24-03-2008)
Kommentar
Fra : Hense


Dato : 24-03-08 16:51

Ok. Tak skal de have det dur fint :)

MvH. Hense

"Michael Haase" <micvans@netscape.invalid> skrev i en meddelelse
news:1a05a$47e7c848$5b6435ae$970@news.arrownet.dk...
> Hense skrev dette den 24-03-2008 15:58:
>
>>
>> Hvad er den nemmeste måde til at der kun kan skrives tal i en tekstboks?
>>
>
> 1. Brug en TMaskEdit med en passende maske. (Kræver mig bekendt at tallet
> har en fast format)
>
> 2. Benyt OnKeyPress på komponenten
>
> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
> begin
> if not(key in ['0'..'9','-',',','.',#8,#9]) then
> key = #0;
> end;
>
> #8 = Tab, #9 = backspace
>
> Hvis du kun har brug for positive heltal, kan du nøjes med
> if not(key in ['0'..'9',#8,#9] ) then ....
>
> --
> Michael Haase



Michael Thomsen (25-03-2008)
Kommentar
Fra : Michael Thomsen


Dato : 25-03-08 13:31

On Mon, 24 Mar 2008 16:50:53 +0100, Hense <hvg@hense.dk> wrote:

> Ok. Tak skal de have det dur fint :)

Hvis du kun skal bruge heltal kan TCSpinEdit bruges. Den ligger
svjh under Samples.

//michael

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

Carsten (26-03-2008)
Kommentar
Fra : Carsten


Dato : 26-03-08 12:05

> Hvad er den nemmeste måde til at der kun kan skrives tal i en tekstboks?

Jeg lavede på et tidspunkt en lille udvidelse til en tekst boks til brug
for indtastning af tal. Måske kan du bruge noget af det.

Carsten


unit TextToInt;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
DsgnIntf,StdCtrls,Forms;

type
TTextToInt = class(tEdit)
private
{ Private declarations }
hMaxVal:Integer;
hMinVal:Integer;
hValue:Integer;
Procedure SetValue(i:Integer);
protected
{ Protected declarations }
procedure Change; Override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override; { override
to set new default }
published
{ Published declarations }
property MaxVal: Integer read hMaxVal write hMaxVal default MaxInt;
property MinVal: Integer read hMinVal write hMinVal default 0;
property Value: Integer read hValue write SetValue default 0;
end;

procedure Register;

implementation
Uses BeInc,WinKey;

constructor TTextToInt.Create(AOwner: TComponent);
begin
inherited Create(AOwner); { perform
inherited initialization }
hMaxVal:=MaxInt;
hMinVal:=0;
end;


procedure Register;
begin
RegisterComponents(cBE_Componenter, [TTextToInt]);
RegisterPropertyEditor(TypeInfo(tEdit),TTextToInt, 'MaxVal',
TIntegerProperty);
RegisterPropertyEditor(TypeInfo(tEdit),TTextToInt, 'MinVal',
TIntegerProperty);
end;

procedure TTextToInt.Change;
Var i:integer; p:integer;
Begin
if (text='') or (text='-') then
exit;
val(text,i,p);
if (p=0) and (i<=MaxVal) and (i>=MinVal) then begin
hValue:=i;
clearUndo;
end else begin
if Parent<>nil then
begin
Application.MessageBox('Fejl i
indtastning','Error',MB_OK+MB_ICONERROR+MB_APPLMODAL);
undo;
val(text,i,p);
SendKeyPress(chr(VK_END));
if (p<>0) or (i>MaxVal) or (i<MinVal) then
clear
end;
end;
inherited Change; { perform inherited event}
end;

Procedure TTextToInt.SetValue(i:Integer);
Begin
if (i>MaxVal) and (i<MinVal) then
i:=0;
text:=intToStr(i);
hValue:=i;
SelectAll;
End;

end.

Søg
Reklame
Statistik
Spørgsmål : 177422
Tips : 31962
Nyheder : 719565
Indlæg : 6407884
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste