|
| 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.
| |
|
|