Q&A

  • 상태바에 전광판처럼 움직이는 글자들...
제가 할려고 하는 것은 상태바의 패널에 움직이는 글자를 만들려고 합니다.

만약 정보내용이 "지금 프로그램을 모두 닫아주세요' 라면...

상태바의 패널창에서....즉 오른쪽에서 부터 "지금 프로그램을 모두 닫아주세요" 라는 글자내용이 왼쪽으로

이동하는 것입니다.

타이머와 상태바의 StatusBar1DrawPanel 이벤트에서 구현을 하고 repaint 했습니다.

즉 소스가..

버튼을 클릭했을때..
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  StatusBar1.Repaint;
end;

procedure TForm1.Button1Click(Sender: TObject);
var StatusPanel: TStatusPanel;
begin
  StatusBar1.Tag := 0;
  StatusBar1.OnDrawPanel := StatusBar1DrawPanel;
  StatusPanel := StatusBar1.Panels.Items[0];
  StatusPanel.Style := psOwnerDraw;
  Timer1.Interval := 220;
end;

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
  const Rect: TRect);
var sPan, LsPan, i: integer;
begin
  StatusBar.Tag := (StatusBar.Tag + 4) mod StatusBar.Width;
  StatusBar.Canvas.Font.Color := clred;
   StatusBar.Canvas.TextOut(StatusBar.Width-StatusBar.Tag, 6, '지금 프로그램을 모두 닫아주세요'
end;

위 소스내용과 같습니다.

즉 오른쪽으로 지정한 글자내용이 타이머에 따라 이동되어 보입니다.

문제는 글자가 오른쪽에서 왼쪽으로 이동하는데..

패널의 왼쪽으로 '지금' 이라는 단어가 위치하면 다시 자동으로 오른쪽으로 글자가 이동하여 처음부터 다시 오른쪽에서 왼쪽으로 이동합니다..

즉 왼쪽으로...'지금'이라는 단어가 오고 마지막으로.. '닫아주세요'에서 '요'라는 글자까지 왔을때 오른쪽끝으로 모든 문장내용이 이동하여 처음부터 다시 글자가 이동했으면 합니다.
1  COMMENTS
  • Profile
    최용일 2008.12.17 04:34
    TCanvas.TextOut보다는 API의 ExtTextOut이나 DrawText/DrawTextEx같이 글자를 클립핑해서 쓸 수 있는 함수를 써서 양끝에서 클립핑을 하도록 쓰시면 될것 같네요...
    • 김현철
    • 2008.12.18 19:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 난난난난
      2008.12.19 02:24
      일반적으로는 메모안에서 enter를 치면 다음칸으로 나옵니다. 님의 경우는 화면에 KeyPreview := True...
    • 김현철
      2008.12.19 18:02
      답글 감사합니다! 님의 얘기대로 했더니... 메모에서 포커스가 없어졌습니다. 포커스가 다음으로 이동...
    • 이강석
      2008.12.18 18:21
      페이지 틀린 곳의 버튼 speed1이고 누르려고 하는 버튼이 speed2라면 speed1Click이벤트 코딩하는 부분...
    • 전봉수
      2008.12.18 20:36
      // 입력탭의 수정 스피드버튼 실행 및 에디터에 값 넣기 IF PAGECONTROL1.ActivePage = TABSHEET1 THEN ...
    • 이강석
      2008.12.18 02:42
      구분되어 있는 다른 스피드 버튼을 눌러지게 한다는 말이 혹시 현재 탭 말고 다른 탭에 있는 버튼을 어떤...
    • 이정욱
      2008.12.18 04:11
      그냥 그 이벤트 호출 해주시면 되는데요.... 만약 Button1Click 로 되어있다면, Button1Click(Button1) ...
    • 전봉수
      2008.12.18 05:32
      이강석님 이정욱님 답변감사합니다. 이강석님 말씀 대로 입니다. "단" 어떤 시점이 아니고 수동으로 눌...
    • 홍성락
      2008.12.18 07:39
      말씀하신걸 직역하면 어떤 스피드 버튼을 클릭하는게 아니라 눌러진 상태로 만든다는 말씀이시지요. 1. ...
    • 전봉수
      2008.12.18 11:25
      홍성락님 답변 감사합니다. 저의 질문을 다른방향으로 이해시신것 같씁니다. 제가질문 들인것은 스피드...
    • 홍성락
      2008.12.18 18:25
      그렇다면 위의 이정욱님 말씀대로하면 될건데요...같은 폼이라면 아무리 페이지컨트롤로 나뉜다하여도 같...
    • 전봉수
      2008.12.18 20:35
      // 입력탭의 수정 스피드버튼 실행 및 에디터에 값 넣기 IF PAGECONTROL1.ActivePage = TABSHEET1 THEN ...
    • 꼬꼬마
    • 2008.12.17 23:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.18 01:40
      Cells에 들어가는 값이 Row, Column순입니다. 이것만 잘 맞추시면 될것같은데요... idx변수가 요일을 나...
    • 꼬꼬마
      2008.12.18 21:43
      근데요// 어떤식으로 해야 되는거져? 일자에 기준으로 데이터를 뿌려주려고 하는데; 이거 생각보다 잘...
    • 최용일
      2008.12.19 02:16
      글쎄요... 그렇게 말씀하시면 더이상 할 말이 없는데요... 데이터들이 들어가야 할 셀의 위치를 다 알고...
    • 홍성락
      2008.12.17 22:42
      Message.WParam의 내용값이 문자렬 시작 주소라서 그냥 DataStr:= PChar(Message.WParam); 또는 DataSt...
    • 최용일
      2008.12.17 23:22
      WM_USER로는 문자열을 받기 힘들건데요... 양쪽 프로세스 간의 주소쳬계들이 달라서 전송을 해봤자 쓸 수...
    • 이정욱
      2008.12.18 04:13
      아니면 소켓 놓고.. 127.0.0.1 로컬로 문자 주고 받으셔도...ㅡㅡ;
    • 김현철
    • 2008.12.17 15:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.17 20:01
      쿼리 자체를 안한다면 모를까... 쿼리한 필드를 없앨 수는 없구요... 업데이트할 때 TUpdateSQL을 써서 ...
    • 김현철
      2008.12.17 20:44
      현재 사용하고있는 컴퍼넌트가 dbexpress에 있는 것을 사용하다보니... TUpdateSQL를 쓰기에는 좀..... ...
    • 이강석
      2008.12.17 18:37
      단순히 위에 코드만 적어주시면 어떤 부분에서 에러나 나는지 익셉션이 나는건지 알 수가 없을거 같은데....
    • 윤박사
      2008.12.17 19:09
      If Not AThread.Terminated And AThread.Connection.Connected Then Begin Try ...
    • 최용일
      2008.12.17 23:27
      서버쪽 소스같은데... AThread.Terminate;는 왜하시는지 모르겠네요... 이유가 있겠죠... 암튼... 서...
    • 이강석
      2008.12.17 23:38
      음...ReadBuffer말고 ReadLn으로 읽으셔서...구조체의 맨마지막에 종료문자코드를 주시고 읽으시면 안되...
    • 이강석
      2008.12.17 23:40
      type TCommBlock = record Msg : array[1..5000] of Byte; ...
    • 이정욱
      2008.12.18 04:15
      근데.. 왜 Record로 하셨는지..... 위 같은 식이라면 그냥.. var Msg : array[1..5000] of Byte; ...
    • 최용일
      2008.12.17 19:17
      델파이7은 Update1까지 나와 있습니다. 설치해주시면 될것같네요... 관련 파일은 코드기어 홈페이지에 ...
    • 맥스
      2008.12.18 00:04
      최 용 일 님 ^^ Update1 해주는거랑 안해주는거..차이 많이 나나여 ?
    • 최용일
      2008.12.18 05:27
      글쎄요... 차이에 대해선 생각해본적이 없어서... 그래도 여러가지 버그들도 고쳐졌고 했으니까 Update...
    • phono
      2008.12.18 18:40
      update1을 패치해 주지 않으면.. ado 와 연동되는 TAdo 쿼리의 sql.add 같은 펑션 사용하여 쿼리문...
    • 맥스
      2008.12.18 19:49
      phono님.. update1 패치 다운로드 꽁짜 맞아여? 불법 델파이를 써서요 ;;
    • lee, js
    • 2008.12.17 03:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 밴댕이
    • 2008.12.17 02:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.17 04:34
      TCanvas.TextOut보다는 API의 ExtTextOut이나 DrawText/DrawTextEx같이 글자를 클립핑해서 쓸 수 있는 함...
    • 이강석
      2008.12.17 18:40
      열때 오류가 발생하는건 대부분 컴포넌트를 사용한 소스를 컴포넌트가 없는 상태에서 열때 날거 같긴한데...
    • 구창민
      2008.12.16 01:11
      안녕하세요... BringToFront 와 SendToBack 을 이용해 보세요.. 즐거운 프로그래밍 하시구요~
    • 이강석
      2008.12.17 23:44
      패스워드나 암호를 login.cgi로 넘길때 login_id.Text나 login_pw.Text는 에디트일거 같은데 단순한 문자...
    • 귀여운대빵
      2008.12.18 02:35
      앗^^ 답변 감사합니다. 아래방식으로 해결되었습니다. procedure setcookies; var i, count:int...
    • 양용성
      2008.12.13 03:21
      오라클에 트랜잭션이 생겼는지 검사하는 방법은 연결이 끊었을 경우나 트랜잭션이 있는지 확인하려고 ...
    • 허수진
    • 2008.12.13 00:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • cell
    • 2008.12.12 18:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바람
      2008.12.12 19:36
      Procedure Val 과 혼동되는건 아닌지요 변수명 Val을 딴 이름으로 바꿔보세요
    • 김현철
    • 2008.12.12 02:45
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.12 03:14
      에러메세지로 보면 아웃룩이 설치안되어 있는것 같네요... 방법1,2둘다 별 차이없구요. 반드시 Micros...
    • 김현철
      2008.12.12 03:33
      답글 감사합니다. 여러 글을 읽는 중에 봤음에도 불구하고 정확히 이해를 못해서 헤매고 있었네여! 자...
    • 최용일
      2008.12.12 03:55
      델파이7이면 FastNet컴포넌트(TNMSMTP) 대신에 Indy 9버전이 기본으로 들어가 있을건데요... Indy로 메...
    • 김현철
      2008.12.12 04:40
      최용일님... 혹시 http://www.delphi.co.kr/zboard/view.php?id=tips&no=1395 기억하시나여? 좋은 샘...
    • 최용일
      2008.12.12 06:06
      파일 첨부 기능만 추가하시면 되겠네요...
    • 남호성
    • 2008.12.12 00:56
    • 0 COMMENTS
    • /
    • 0 LIKES