Q&A

  • listview에서 caption의 내용이 안보이게 하려면 어떻게 해야하나오
향상 검색만 하다가 도져히 안되어 질문을 드립니다.
아래 프로그램과 같이 그림파일을 LISTVIEW에 표시하는 프로그램을 만드는데,
CAPTION에 파일명을 입력을 하고있읍니다.

LISTVIEW에 있는 ITEM을 선택하면 그화일이 IMAGE에 표시하려고 합니다.

문제는 CAPTION을 보이지않게 하려고합니다


procedure TForm1.Button1Click(Sender: TObject);
var
tmpJpg  : TJPEGImage ;
Bit_map1 , Bit_map2 : TBitmap;
ThumbList   : TListItem;
tmpRect       : TRect;
tmpHeight ,tmpWidth ,i  : Integer;

begin

IF opendialog1.Execute THEN
for I := 0 to opendialog1.Files.Count -1 do begin
   { image1.Picture.LoadFromFile(opendialog1.Files[i]);}
    if LowerCase(ExtractFileExt(opendialog1.Files[i])) = '.jpg' then
     begin
      tmpJpg := TJPEGImage.Create;
      Bit_map2 := TBitmap.Create;
      Bit_map1 := TBitmap.Create;
      Bit_map1.Width   := ImageList1.Width;
      Bit_map1.Height  := ImageList1.Height;
      ThumbList     := ListView1.Items.Add;

      tmpJpg.LoadFromFile(opendialog1.Files[i]);
      Bit_map2.Assign(tmpJpg);

    end;

    if Bit_map2.Width > Bit_map2.Height then // 가로가 긴경우
    begin
      tmpRect.Left   := 0;                         // 가로는 기니깐
      tmpRect.Right  := ImageList1.Width;  // 최고길이로 셋팅
      // 아래부턴 세로의 길이를 어떻게 할지 계산
      tmpHeight      := round(ImageList1.Width / Bit_map2.Width * Bit_map2.Height);
      tmpRect.Top    := round((ImageList1.Height - tmpHeight) / 2);
      tmpRect.bottom := tmpRect.Top + tmpHeight;
    end
  else   // 세로가 긴경우
    begin
      tmpRect.Top    := 0;     // 세로는 최대 길이로 셋팅
      tmpRect.Bottom := ImageList1.Height;
      // 가로 비율 맞춘다.
      tmpWidth       := round(ImageList1.Height / Bit_map2.Height * Bit_map2.Width);
      tmpRect.Left   := round((ImageList1.Width - tmpWidth) / 2);
      tmpRect.Right  := tmpRect.Left + tmpWidth;
    end;

  Bit_map1.Canvas.StretchDraw(tmpRect, Bit_map2);
  ThumbList.Caption := opendialog1.Files[i] ;
  ThumbList.ImageIndex := ImageList1.Add(Bit_map1, nil);

tmpJpg.Free ;
Bit_map1.free ;
Bit_map2.free ;
end;
end;

LISTVIEW에 SMALLIMAGE , VIEWSTYLE = vssmallicon 을 표시하였읍니다.

아니면 file명을 저장할수 있는 다른방법이 있는지요.
부탁드립니다.
2  COMMENTS
  • Profile
    장성호 2008.01.25 03:32
    Listview의 아이템 Caption에 내용이 안보이게 하려면?

    1. Caption에 내용을 넣지 않는다.

    2. ListView를 OwnerDraw로 draw하면서 caption은 안그린다.

    3. Column의 Width=0 로 한다.

    방법1이 편리하겠네요


    그런데 님께서 원하시는것은 Caption에  내용을 안보이게 하는것이 목적이 아니라
    filename을 저장하고 싶은것이죠

    1. 특정 subitem에 file명을 넣으시고 그 subitem의 Column의 Width=0 로 하면 안보이겠네요
        ==> Column의 Width가 조정되면 보일수도...

    2.TListItem 에는 Pointer(void *)형의  Data라는 멤버가 있습니다.
        file명은 다른데 저장해주시고  이 data라는 멤버에 file명이 저장해둔곳의 pointer를 저장해주시면 됩니다.

    3. TStringList 를 하나 만들어서 filename을 ListView의 아이템 순서대로 넣습니다.
       item을 선택했을때 그 아이템에 해당한는 순서를 가지고 StringList에서 filename을 가져옵니다.

    4.기타...

    그럼

        

  • Profile
    이진생 2008.01.25 06:03
    답변 감사드립니다.

    혹시 Caption의 위치는 변경가능하나요 ?

    현재는 화면 우측상단에 있는데 이것을 좌측상단으로 이동이 가능하나요 ?

    • 김소연
    • 2008.02.02 13:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.02.12 05:31
      오로지 영어나 숫자만 입력 받고 싶으시다면 IMEMODE를 imAlpha로 해보세요. 그래도 안 먹으면 KeyP...
    • 김범진
    • 2008.02.01 18:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.02.02 07:43
      전문가는 아니지만 저 같은 경우는 따로 모아둡니다. 폼없이 유니트만 하나 만들어서 전체적으로 공통으...
    • 김범진
      2008.02.02 21:48
      올려 주신 글은 잘 읽었읍니다. 고맙습니다. 코딩에 도움이 될 거 같습니다. 그럼 이만.
    • 이정욱
      2008.02.01 18:34
      제데로 받아오신것 같습니다.. <Form name="Tax" method="post" action="./refer_saupja_caution.asp"&...
    • 초봉델파이어
      2008.02.02 19:14
      빠른 답변 감사드립니다.. 다시 질문을 드렸었는데 ... 인터넷을 검색해서 웹브라우저로 처리했네요....
    • 이정욱
      2008.02.06 04:29
      자바스크립트 처리 엔진을 만드시는것보다는... 아마 웹브라우져를 사용하시는게 편하실것 같습니다. 다만...
    • 김태열
    • 2008.02.01 05:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정경철
      2008.02.01 19:11
      zeosDBconnect.Hostname := ''; zeosDBconnect.User     := ''; zeosDBconnect.Da...
    • Lee
    • 2008.01.31 00:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델델
    • 2008.01.31 00:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김소연
    • 2008.01.30 02:50
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.01.30 18:27
      1. TDrawGrid(DBGrid1).ScrollBars := ssNone; 2. TDrawGrid(DBGrid1).Options := TDrawGrid(DBGrid1).O...
    • 김소연
      2008.02.01 01:32
      소울해커님 답변감사해요^^;; 추가질문이 있어서요.. 2번의 경우요.. 전체필드의 옵션말고 각각의 칼럼별...
    • 소울해커
      2008.02.01 02:41
      후웁... 대한민국에 안 되는게 어디 있겠습니까... 만은... 효율성이 떨어지는 건 있기마련이죠. 기본 ...
    • 델델
    • 2008.01.29 20:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.01.29 23:46
      ComboBox1.Style := csDropDownList; 로 하시면 됩니다.
    • 머프
    • 2008.01.29 12:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.01.30 00:07
      폼이 종료되지 않도록 하실려는거라면 따로 전역 변수를 두시고 처리하시면되겟네요. public  ...
    • 머프
    • 2008.01.29 12:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 나는살아있다.
      2008.01.29 19:03
      NT에서는 안먹히는 것으로 알고 있습니다. Hooking으로 방향을 잡으시는게......
    • 김소연
    • 2008.01.29 03:28
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.01.30 01:53
      FileNm := ExtractFilePath(Application.ExeName) + '\Set\Image\' + dbGrid1.Fields[1].AsString + '.Bmp'...
    • 김소연
      2008.01.30 03:01
      CellRect는  TDbGrid에 없는 속성이군요ㅠㅠ+ 그리고 아래와 같이 수정하였더니 이미지 사이즈...
    • 소울해커
      2008.01.30 03:11
      Outrect := (ACol * DBGrid1.DefaultColWidth, ARow * DBGrid1.DefaultRowHeight, (ACol + 1) * DBGrid1....
    • 김소연
      2008.01.30 03:25
      답변감사합니다. 그런데 TdbGrid에는 DefaultRowHeight등의 속성이 없네요.ㅠㅠ+ 간단한듯하지만 잘 풀리...
    • 소울해커
      2008.01.30 03:51
      Outrect := (ACol * TDrawGrid(DBGrid1).DefaultColWidth, ARow * TDrawGrid(DBGrid1).DefaultRowHeight, ...
    • 남호성
    • 2008.01.28 22:58
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 황경수
    • 2008.01.28 20:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.01.30 00:03
      생뚱맞은 답변이 될줄 모르겠습니다. 1. 그리드 하나 올려놓으시고 그리드의 ScrollBar를 모두 없애세요...
    • 김영대
      2008.01.26 03:03
      제가 알기론 대부분의 외국 터미널에서 멀티바이트 처리를 안하는거루 알고있습니다. 그래서 당연히 ...
    • 존재의바다
      2008.01.28 07:44
      답변 감사합니다. 혹시 온누리의 김영대님이세요? SQT의 이채성입니다. 갑자기 terminal을 하나 개발...
    • 델사랑
    • 2008.01.25 00:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2008.01.26 01:29
      Tcp-ip에 대한 기본적인 내용입니다 인터넷은 주로 80번포트를 사용합니다. 그포트 막으면 인터넷도 당연...
    • 하늘 산
      2008.01.25 01:13
      안녕하세요. 포트가 막혀있는 DB포트가 막혀있는 경우에는 Delphi에서는 마이다스라는 기능이 있습니다 ...
    • 이진생
    • 2008.01.24 07:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.01.25 03:32
      Listview의 아이템 Caption에 내용이 안보이게 하려면? 1. Caption에 내용을 넣지 않는다. 2. ListVi...
    • 이진생
      2008.01.25 06:03
      답변 감사드립니다. 혹시 Caption의 위치는 변경가능하나요 ? 현재는 화면 우측상단에 있는데 이것을...