Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
리스트박스에서...
데이타베이스 테이블에서 각 항목들을 3개를 만들었다하고...
그 내용을 리스트 박스에 모두 출력하는 방법은 어떻게 하는지 답변 좀 부탁드립니다...
------------------------------------
항목1 항목2 항목3
항목1의내용 항목2의내용 항목3의내용
. . .
. . .
. . .
------------------------------------
와 같이 하는 방법을 좀........
1
COMMENTS
이재식
•
1999.12.18 07:17
김민호 wrote:
> 데이타베이스 테이블에서 각 항목들을 3개를 만들었다하고...
> 그 내용을 리스트 박스에 모두 출력하는 방법은 어떻게 하는지 답변 좀 부탁드립니다...
>
> ------------------------------------
> 항목1 항목2 항목3
> 항목1의내용 항목2의내용 항목3의내용
> . . .
> . . .
> . . .
> ------------------------------------
> 와 같이 하는 방법을 좀........
이재식 Wrote :
안녕하십니까?
위의 표현대로 하려면 ListBox의 DrawItem 및 Canvas객체를 이용해야 합니다.
제가 샘플로 한번 코딩을 설명드리겠습니다.
우선 3개의 항목을 출력하려면 3개의 간격에 대해 각각의 간격을 설정해야 될 것입니다.
우리는 그 변수는 Size1, Size2, Size3라고 합시다.
Size1 := 30 ; // 항목 1간격
Size2 := 30 ; // 항목 2 간격
Size3 := 30 ; // 항목 3 간격
그리고, LIstBox에 보면 Style속성이 있습니다.
대개 standard라고 디폴트로 되어 있을 것입니다.
이것을 standard가 아닌 나머지 두개가 더 있는데요, 그 중 아무것으로 하나
선택하세요. 이유는 standard로 하면 제 경험상 DrawItem에 코딩된대로
제대로 출력이 안되더라구요. 뭔가 이상한 글자가 나오더라구요.
그런다음 Table1에 3개의 필드항목이 있다고 가정합시다.
F1, F2, F3이렇게 말입니다.
이젠 이것을 위의 표현대로 출력을 한다고 합시다.
즉, 버튼1을 누르면 테이블에 있는 내용이 리스트 박스에 3칼럼의 형식으로
출력이 된다고 합시다.
Button1 클릭 이벤트
procedure TForm1.Button1Click(Sender: TObject);
var
Data1, Data2, Data3 : String ;
begin
With Table1 do
begin
Close ;
Open ;
While Not Eof do
begin
Data1 := FieldByName('F1').asString ;
Data2 := FieldByName('F2').asString ;
Data3 := FieldByName('F3').asString ;
ListBox1.Items.Add (Data1 + #9 + Data2 + #9 + Data3) ;
// #9는 아스키코드로 Tab키로 말합니다.
// #9말고도 다른 특정 문자로 필드간을 구별하는 문자를
// 택할 수 있는 것이죠. 가령 #32등등.
Next ;
end ;
end ;
end; // 여기까지가 리스트 박스에 출력을 하는 것입니다.
이제부터는 리스트 박스의 OnDrawItem이벤트에 다음과 같이 코딩합니다.
var
Col1, Col2, Col3 : TRect ; // 이것은 각 칼럼별 크기를 가지는 변수
Data : String ; // 출력할 데이터
Tab_pos : integer ; // 위에서 말한 칼럼간 간격 식별자 #9의 위치를 저장
begin
Col1 := Rect ;
Col2 := Rect ;
Col3 := Rect ;
Col1.Right := Size1 ;
Col2.Left := Col1.Right + 1 ;
Col2.Right := Col2.Left + Size2 ;
Col3.Left := Col2.Right + 1 ;
Col3.Right := col3.Left + Size3 ;
Data := TListBox(Control).Items[Index] ; // 리스트박스의 데이터를 대입
with TListBox(Control).Canvas do
begin
FillRect (Rect) ; // 반드시 필요.
Tab_Pos := Pos (#9, Data) ;
// TextRect대신 TextOut를 사용해도 됩니다.
// 첫번째 칼럼 출력
TextRect (Col1, Col1.Left, Col1.top, copy(Data, 1, Tab_Pos-1)) ;
// 두번째 칼럼 출력
Data := Copy(Data, Tab_Pos+1, Length(Data) - Tab_Pos + 1) ;
Tab_Pos := Pos (#9, Data) ;
TextRect (Col2, Col2.Left, Col2.top, copy(Data, 1, Tab_Pos-1)) ;
// 세번째 칼럼 출력
Data := Copy(Data, Tab_Pos+1, Length(Data) - Tab_Pos + 1) ;
TextRect (Col3, Col3.Left, Col3.top, Data) ;
end ;
end;
그럼...
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
이재민
•
1999.12.19 20:00
1
COMMENTS
/
0
LIKES
QReport출력시 레코드 수 구하기!
이재식
•
1999.12.20 05:04
이재민 wrote: > 스트링그리드를 레포트출력하려고 합니다. > 그런데 페이지당 25개의 레코드가 출력하면...
임혜정
•
1999.12.19 04:24
1
COMMENTS
/
0
LIKES
델파이를 ISAPI를 사용해서 웹프로그램을 만들고 싶어요..알려주세요.
TeamX
•
1999.12.20 11:14
안녕하세요. 제가 잘은 모르지만..... 저의 얕은 생각을 말씀드리면.. 1.Windows NT 가 필요 + 사용법도...
김주석
•
1999.12.19 02:08
1
COMMENTS
/
0
LIKES
linux에 디렉토리생성하는 방법(nmftp말고요)
구창민
•
1999.12.19 10:13
김주석 wrote: > delphi 4.0 (c/s)의 nmftp컴포넌트말고 다른 방법으로 > 서버(linux)에 디렉토리를 생...
전보영
1999.12.19 01:59
0
COMMENTS
/
0
LIKES
EDBEgine Error
박성훈
1999.12.19 01:28
0
COMMENTS
/
0
LIKES
DBgrid의 칼럼의 Caption을 자동으로 조절하고 싶은데...
이재민
•
1999.12.18 22:42
1
COMMENTS
/
0
LIKES
QReport에서 조건만족하면 Newpage로 넘기기...
유도삼
•
1999.12.19 00:50
이재민 wrote: > 안녕하세요? > QReport출력시 어떤 조건을 만족하면 새로운 페이지로 넘어가게하고 싶...
김정화
•
1999.12.18 22:37
4
COMMENTS
/
0
LIKES
MDI폼에서 같은child Form이 계속열려요...
강인규
•
1999.12.20 19:31
이런 방법을 써보심이 어떨른지...... 폼을 발생시킬 이벤트에 아래와 같이 코딩합니다 if form2 =...
서영택
•
1999.12.21 19:22
form2.WindowState := wsNormal; 이부분을 form2.Show; 이렇게 사용해도 좋을듯 합니다만... 강인규 wr...
박성훈
•
1999.12.19 01:22
김정화 wrote: > Delphi고수님들께 왕초보가 감히 질문드립니다. > > MDI폼에서 child폼을 Application...
이주흥
•
1999.12.19 00:13
김정화 wrote: > Delphi고수님들께 왕초보가 감히 질문드립니다. > > MDI폼에서 child폼을 Application...
소훈
•
1999.12.18 22:24
1
COMMENTS
/
0
LIKES
ActiveForm을 브라우저에서 볼때 보안검증 묻지 않게..
이정욱
•
1999.12.19 02:40
정확한 답변은 아니지만 길은 이렇습니다. 레지스트리를 건드리셔야 할것입니다. 또, 정상적으로는 ...
김정화
1999.12.18 22:11
0
COMMENTS
/
0
LIKES
도움말 만드는 방법 좀 갈켜 주세요!!
소훈
1999.12.18 22:07
0
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
왕초보
1999.12.18 21:12
0
COMMENTS
/
0
LIKES
[API]바탕화면의 아이콘을 어떻게 갱신하죠?
임형호
•
1999.12.18 20:02
1
COMMENTS
/
0
LIKES
far external 에 대하여....
TeamX
•
1999.12.20 11:25
제가 알기로는 일종의 지시자라고 알고 있습니다. 명칭은 별로 중요하지 않고요(?) 제가 아는걸 말씀드...
초보가
1999.12.18 19:45
0
COMMENTS
/
0
LIKES
웹 DB에 관하여
수퍼맨
1999.12.18 19:42
0
COMMENTS
/
0
LIKES
델 실행시 에러
[질문]하위폼에서 상
•
1999.12.18 19:23
1
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
유도삼
•
1999.12.19 00:53
[질문]하위폼에서 상위폼의 메뉴..! wrote: > 안녕하세요! > > 제목그대로 하위폼에서 버튼을 누르면 ...
장영민
1999.12.18 18:18
0
COMMENTS
/
0
LIKES
db에서 불러온 내용을 word로 저장
김민호
•
1999.12.18 05:08
1
COMMENTS
/
0
LIKES
리스트박스에서...
데이타베이스 테이블에서 각 항목들을 3개를 만들었다하고... 그 내용을 리스트 박스에 모두 출력하는 방법은 어떻게 하는지 답변 좀 부탁드립니다... ------------------------------------ 항목1 항목2 항목3 항목1의내용 항목2의내용 ...
이재식
•
1999.12.18 07:17
김민호 wrote: > 데이타베이스 테이블에서 각 항목들을 3개를 만들었다하고... > 그 내용을 리스트 박스...
임병우
1999.12.18 04:02
0
COMMENTS
/
0
LIKES
프린터 setting 시 델파이 down~~sos
박성훈
1999.12.18 03:53
0
COMMENTS
/
0
LIKES
실행중 컴포넌트 다중선택
송수현
•
1999.12.18 03:36
1
COMMENTS
/
0
LIKES
키처리에 관한 몇가지 질문입니다.
구창민
•
1999.12.18 10:08
송수현 wrote: > 안녕하세요 질문 했는데 답변이 없어서 다시 올립니다. > 질문이 잘못 되었나봐요 *^^* ...
김민호
1999/12/18 05:08
Views
256
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 데이타베이스 테이블에서 각 항목들을 3개를 만들었다하고...
> 그 내용을 리스트 박스에 모두 출력하는 방법은 어떻게 하는지 답변 좀 부탁드립니다...
>
> ------------------------------------
> 항목1 항목2 항목3
> 항목1의내용 항목2의내용 항목3의내용
> . . .
> . . .
> . . .
> ------------------------------------
> 와 같이 하는 방법을 좀........
이재식 Wrote :
안녕하십니까?
위의 표현대로 하려면 ListBox의 DrawItem 및 Canvas객체를 이용해야 합니다.
제가 샘플로 한번 코딩을 설명드리겠습니다.
우선 3개의 항목을 출력하려면 3개의 간격에 대해 각각의 간격을 설정해야 될 것입니다.
우리는 그 변수는 Size1, Size2, Size3라고 합시다.
Size1 := 30 ; // 항목 1간격
Size2 := 30 ; // 항목 2 간격
Size3 := 30 ; // 항목 3 간격
그리고, LIstBox에 보면 Style속성이 있습니다.
대개 standard라고 디폴트로 되어 있을 것입니다.
이것을 standard가 아닌 나머지 두개가 더 있는데요, 그 중 아무것으로 하나
선택하세요. 이유는 standard로 하면 제 경험상 DrawItem에 코딩된대로
제대로 출력이 안되더라구요. 뭔가 이상한 글자가 나오더라구요.
그런다음 Table1에 3개의 필드항목이 있다고 가정합시다.
F1, F2, F3이렇게 말입니다.
이젠 이것을 위의 표현대로 출력을 한다고 합시다.
즉, 버튼1을 누르면 테이블에 있는 내용이 리스트 박스에 3칼럼의 형식으로
출력이 된다고 합시다.
Button1 클릭 이벤트
procedure TForm1.Button1Click(Sender: TObject);
var
Data1, Data2, Data3 : String ;
begin
With Table1 do
begin
Close ;
Open ;
While Not Eof do
begin
Data1 := FieldByName('F1').asString ;
Data2 := FieldByName('F2').asString ;
Data3 := FieldByName('F3').asString ;
ListBox1.Items.Add (Data1 + #9 + Data2 + #9 + Data3) ;
// #9는 아스키코드로 Tab키로 말합니다.
// #9말고도 다른 특정 문자로 필드간을 구별하는 문자를
// 택할 수 있는 것이죠. 가령 #32등등.
Next ;
end ;
end ;
end; // 여기까지가 리스트 박스에 출력을 하는 것입니다.
이제부터는 리스트 박스의 OnDrawItem이벤트에 다음과 같이 코딩합니다.
var
Col1, Col2, Col3 : TRect ; // 이것은 각 칼럼별 크기를 가지는 변수
Data : String ; // 출력할 데이터
Tab_pos : integer ; // 위에서 말한 칼럼간 간격 식별자 #9의 위치를 저장
begin
Col1 := Rect ;
Col2 := Rect ;
Col3 := Rect ;
Col1.Right := Size1 ;
Col2.Left := Col1.Right + 1 ;
Col2.Right := Col2.Left + Size2 ;
Col3.Left := Col2.Right + 1 ;
Col3.Right := col3.Left + Size3 ;
Data := TListBox(Control).Items[Index] ; // 리스트박스의 데이터를 대입
with TListBox(Control).Canvas do
begin
FillRect (Rect) ; // 반드시 필요.
Tab_Pos := Pos (#9, Data) ;
// TextRect대신 TextOut를 사용해도 됩니다.
// 첫번째 칼럼 출력
TextRect (Col1, Col1.Left, Col1.top, copy(Data, 1, Tab_Pos-1)) ;
// 두번째 칼럼 출력
Data := Copy(Data, Tab_Pos+1, Length(Data) - Tab_Pos + 1) ;
Tab_Pos := Pos (#9, Data) ;
TextRect (Col2, Col2.Left, Col2.top, copy(Data, 1, Tab_Pos-1)) ;
// 세번째 칼럼 출력
Data := Copy(Data, Tab_Pos+1, Length(Data) - Tab_Pos + 1) ;
TextRect (Col3, Col3.Left, Col3.top, Data) ;
end ;
end;
그럼...