Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
StringGrid에서 Cell에 입력제한하는 방법
Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다.
예를 들면 10자리까지만 입력된다거나 소수점2자리를 가지는 15자리의 숫자만 입력되도록 하거나 처럼 말입니다.
방법을 아시는 분 도움 부탁드립니다.
1
COMMENTS
김영대
•
1999.06.24 23:52
이상준 께서 말씀하시기를...
> Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다.
> 예를 들면 10자리까지만 입력된다거나 소수점2자리를 가지는 15자리의 숫자만 입력되도록 하거나 처럼 말입니다.
> 방법을 아시는 분 도움 부탁드립니다.
아래 source는 말씀하신 기능을 하는 예제는 아니지만
처리하는 방법만 참고하시라고 올려둡니다
// 수치자료를 다루는 StringGrid이므로 right aligned, floating point,
// editable grid 가 가능합니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tmpText, cellText: String;
i, X, Y: Integer;
// StringGrid1의 프로퍼티 setting
// DefaultDrawing := True
// Options에 goEditing 추가
implementation
{$R *.DFM}
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (Row > 0) and (Col > 0) and (StringGrid1.Cells[Col, Row] <> '') then
begin
cellText := '';
tmpText := StringGrid1.Cells[Col, Row];
for i := 1 to Length(tmpText) do
if tmpText[i] in ['0'..'9','-','+','.'] then
cellText := cellText + tmpText[i];
try
{cell의 값을 floating point 으로 변환}
if cellText <> '' then
cellText := FloatToStrF(StrToFloat(cellText),
ffNumber,13,2); // 소숫점을 없애려면 2->0 으로
except on EConvertError do
begin
cellText := '';
end;
end;
if cellText = '' then
begin
{Set font}
StringGrid1.Canvas.Font.Color := clRed; {잘못된 수치는 빨강}
StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+2,
StringGrid1.Cells[Col,Row]);
end
else
begin
{cell이 수치이므로 오른쪽 right-justified}
X := Rect.Right - StringGrid1.Canvas.TextWidth(cellText);
{cell의 수치를 bottom과 top에 대한 중앙으로}
Y := Rect.Top + ((Rect.Bottom - Rect.Top -
StringGrid1.Canvas.TextHeight(cellText)) div 2);
StringGrid1.Canvas.Font.Style := StringGrid1.Canvas.Font.Style - [fsBold];
// 오른쪽 margin을 주기위해 왼쪽으로 2 pixels 만큼 이동
Dec(X, 2);
StringGrid1.Canvas.TextRect(Rect, X, Y, cellText);
end;
end;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
정남용
•
1999.04.16 01:29
3
COMMENTS
/
0
LIKES
인스톨쉴드로 BDE를 배포하는데
김정선
•
1999.04.23 00:51
저두 같은 문제로 올렸는데 고맙게도 web@ns.nilex.co.kr라는 분이 메일을 보내왔더라구요.. Autoexec.bat...
이정욱
•
1999.04.17 02:26
저도 역시 이런 문제 때문에 고생을 한적이 있었습니다. 전 엑세스 DB를 사용했을때 문제였죠. 그래서 결...
김정선
•
1999.04.16 22:56
저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 전 델파이4.0 오라클 8.0.5버젼을 가지고 ...
이주흥
•
1999.06.25 04:47
1
COMMENTS
/
0
LIKES
Install Shield 사용시...
이정욱
•
1999.06.25 11:50
100% VCL 이라면 따로 배포할 필요가 없습니다. 모든것은 생성된 EXE파일안데 들어가게 됩니다. 100% VCL...
한승협
1999.06.25 04:17
0
COMMENTS
/
0
LIKES
컨트롤과 데이터베이스와의 연결? TDataLink?
하명훈
•
1999.06.25 04:17
5
COMMENTS
/
0
LIKES
QR에서 프린트되고..안되고..
문창완
•
1999.04.17 00:42
네모나 이미지의 각꼭지를 적당하게 라운드 처리하고싶습니다. 도와주세요... 멘날 질문만 하는 사람입...
안치봉
•
1999.04.17 01:17
문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
문창완
•
1999.04.17 01:49
안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
안치봉
•
1999.04.17 02:14
문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
문창완
•
1999.04.17 03:07
정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
초보
1999.06.25 02:45
0
COMMENTS
/
0
LIKES
[급해요]쿼리해서 화일생성중에 에러발생
문창완
•
1999.04.17 00:42
4
COMMENTS
/
0
LIKES
이미지 라운드 처리에대해?
안치봉
•
1999.04.17 01:17
문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
문창완
•
1999.04.17 01:49
안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
안치봉
•
1999.04.17 02:14
문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
문창완
•
1999.04.17 03:07
정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
변상준
•
1999.06.25 01:58
2
COMMENTS
/
0
LIKES
컴포넌트명 앞의 T ?
행인1
•
1999.06.25 02:10
변상준 께서 말씀하시기를... > 컴포넌트명 앞의 'T'의 의미는 무엇입니까 ? "델파이에서는 일반적으로...
신인재
•
1999.06.25 02:06
음냐.... T는 컴포넌트라기보다는 델파이의 클래스명을 정의할때 전통적으로 쓰이는 것이지요. 이...
엠마
•
1999.04.17 00:43
2
COMMENTS
/
0
LIKES
테이블에 전화번호 입력시 오류발생
김영해
•
1999.04.17 07:08
엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...
bluepine
•
1999.04.17 01:37
엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...
이수진
•
1999.06.25 01:19
2
COMMENTS
/
0
LIKES
QuickReport.Print하면 일부만 프린트되네요....
경험자
•
1999.06.25 04:34
이수진 께서 말씀하시기를... > 퀵리포트를 미리보기 하지않고 바로 프린터로 출력할때 생기는 문제입니다...
하남수
•
1999.06.25 02:28
사용은 안해봤지만 다음 프러퍼티를 사용하면 되지 않을까요... QuickRep1.PrinterSettings.LastPage
진중걸
1999.06.25 00:15
0
COMMENTS
/
0
LIKES
프린터제어에 대해.. Help
이순희
•
1999.04.16 05:02
2
COMMENTS
/
0
LIKES
테이블에서 time형식에 맞게 입력하는 방법
구창민
•
1999.04.16 07:33
이순희 wrote: > 안녕하세요... 또 질문 올리네요.. > 저번 답변 고마웠습니다.. 그런데.. 근본적인 문제...
bluepine
•
1999.04.17 01:23
구창민 wrote: > 이순희 wrote: > > 안녕하세요... 또 질문 올리네요.. > > 저번 답변 고마웠습니다.. ...
이상준
•
1999.06.24 22:36
1
COMMENTS
/
0
LIKES
StringGrid에서 Cell에 입력제한하는 방법
Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다. 예를 들면 10자리까지만 입력된다거나 소수점2자리를 가지는 15자리의 숫자만 입력되도록 하거나 처럼 말입니다. 방법을 아시는 분 도움 부탁드립니다.
김영대
•
1999.06.24 23:52
이상준 께서 말씀하시기를... > Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다. ...
유애선
•
1999.06.24 22:08
3
COMMENTS
/
0
LIKES
[제발 도와주세요]계층을 어떻게 표현할지...?
이순희
•
1999.04.15 08:34
안녕하세요... 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. 두개의 필드에 대해 (끝시간...
bluepine
•
1999.04.17 01:18
이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
글쎄요.
•
1999.04.15 19:02
이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
양윤호
•
1999.06.24 21:56
1
COMMENTS
/
0
LIKES
전화접속 어댑터를 설치하려면??
김영대
•
1999.06.25 02:42
양윤호 께서 말씀하시기를... > 윈도우즈 95와 98의 CD를 넣은 상태에서 직접 전화접속 어댑터와 전화접속...
문창완
•
1999.04.17 00:42
5
COMMENTS
/
0
LIKES
이미지 라운드 처리에대해?
최석기
•
1999.06.24 21:30
preview화면에서 괜찮은데 인쇄를 하면은, 글자가 가로고 커져 나옵니다. 항상 그런것은 아니고 특정...
안치봉
•
1999.04.17 01:17
문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
문창완
•
1999.04.17 01:49
안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
안치봉
•
1999.04.17 02:14
문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
문창완
•
1999.04.17 03:07
정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
bds
1999.06.24 20:27
0
COMMENTS
/
0
LIKES
에러발생 급함
하늘
•
1999.04.16 20:24
1
COMMENTS
/
0
LIKES
프로그램 구입할 수 있나요..
이정욱
•
1999.04.17 00:47
글쎄요... 광고/홍보란에 한번 써보세요. 하늘 wrote: > 안녕하세요... > 델파이로 만든 가계부 프...
heewoony
•
1999.06.24 20:11
2
COMMENTS
/
0
LIKES
프린터 제어
하남수
•
1999.06.25 00:05
heewoony 께서 말씀하시기를... > 퀵레포트에서 라벨을 출력하려구합니다. > 근데. 출력 용지는 연속연...
하남수
•
1999.06.25 00:05
heewoony 께서 말씀하시기를... > 퀵레포트에서 라벨을 출력하려구합니다. > 근데. 출력 용지는 연속연...
엠마
•
1999.04.17 00:43
2
COMMENTS
/
0
LIKES
테이블에 전화번호 입력시 오류발생
김영해
•
1999.04.17 07:08
엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...
bluepine
•
1999.04.17 01:37
엠마 wrote: > 입력폼에서 전화번호입력을 maskedit로 지역번호 4자리 국번4,전화번호4로 입력해 테이블에...
이현신
1999.06.24 19:48
0
COMMENTS
/
0
LIKES
CPU 사용률을 구하는데 잘 않되내요..
이상준
1999/06/24 22:36
Views
149
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> Stringgrid에서 특정Cell에 데이타를 입력하는 데 조건을 주고 싶습니다.
> 예를 들면 10자리까지만 입력된다거나 소수점2자리를 가지는 15자리의 숫자만 입력되도록 하거나 처럼 말입니다.
> 방법을 아시는 분 도움 부탁드립니다.
아래 source는 말씀하신 기능을 하는 예제는 아니지만
처리하는 방법만 참고하시라고 올려둡니다
// 수치자료를 다루는 StringGrid이므로 right aligned, floating point,
// editable grid 가 가능합니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tmpText, cellText: String;
i, X, Y: Integer;
// StringGrid1의 프로퍼티 setting
// DefaultDrawing := True
// Options에 goEditing 추가
implementation
{$R *.DFM}
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (Row > 0) and (Col > 0) and (StringGrid1.Cells[Col, Row] <> '') then
begin
cellText := '';
tmpText := StringGrid1.Cells[Col, Row];
for i := 1 to Length(tmpText) do
if tmpText[i] in ['0'..'9','-','+','.'] then
cellText := cellText + tmpText[i];
try
{cell의 값을 floating point 으로 변환}
if cellText <> '' then
cellText := FloatToStrF(StrToFloat(cellText),
ffNumber,13,2); // 소숫점을 없애려면 2->0 으로
except on EConvertError do
begin
cellText := '';
end;
end;
if cellText = '' then
begin
{Set font}
StringGrid1.Canvas.Font.Color := clRed; {잘못된 수치는 빨강}
StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+2,
StringGrid1.Cells[Col,Row]);
end
else
begin
{cell이 수치이므로 오른쪽 right-justified}
X := Rect.Right - StringGrid1.Canvas.TextWidth(cellText);
{cell의 수치를 bottom과 top에 대한 중앙으로}
Y := Rect.Top + ((Rect.Bottom - Rect.Top -
StringGrid1.Canvas.TextHeight(cellText)) div 2);
StringGrid1.Canvas.Font.Style := StringGrid1.Canvas.Font.Style - [fsBold];
// 오른쪽 margin을 주기위해 왼쪽으로 2 pixels 만큼 이동
Dec(X, 2);
StringGrid1.Canvas.TextRect(Rect, X, Y, cellText);
end;
end;
end;
end.