Несколько колонок в Valuelisteditor в Делфи

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by bertys, 16 Oct 2012.

  1. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, как сделать 4 колонки в валуелистедитор, чтоб было так: (чтоб все было выдно)

    [​IMG]


    А не вот так (чтоб не было скрула внизу)

    [​IMG]


    Зарание спасибо
     
  2. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Помогите плз, срочно нужною Завтра нужно всю программу сдать в универ
     
  3. Vet

    Vet New Member

    Joined:
    3 Feb 2006
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Попробуй свойство ScrollBars.
     
  4. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Ничего не происходит

    Ну что никто не пользовался этим компонентом???
    Помогите плз
     
  5. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    первое: заполняешь капшины заголовков в свойстве TValueListEditor.TitleCaptions (TStrings)
    во-вторых в коде прописываешь ValueListEditor1.ColCount:= число_столбцов;
     
  6. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0

    Именно так я и делал, выходит как на скрине №2, а если убрать скрулбар то вообще добавленый столбик не отображается
     
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    На событие OnDrawCell вешай обработчик
    Code:
    procedure TfrmMain.lstValuesDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var temp,TempWidth:integer;
    begin
      with (Sender as TValueListEditor) do
      begin
        for temp:=0 to ColCount-1 do
          ColWidths[temp]:=Width div ColCount - 2;
      end;
    end;
     
    #7 xophet, 17 Oct 2012
    Last edited: 17 Oct 2012
  8. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0

    Не выходит, может есть какаето замена этому компоненту?
     
  9. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Очень даже выходит, сначала у себя проверил, прежде чем написать.
    Особенно если сначала в свойствах компонента найти
    DisplayOptions и поставить DoAutoColResize в False
     
    #9 xophet, 17 Oct 2012
    Last edited: 17 Oct 2012
  10. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    возми TListView с ViewStyle:= vsReport и не парься
     
  11. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    К сожелению ничего не выходит, в примере xophet меня почти все устраивает, но когда дело доходит до заполнения, то ничего не выходит.
    Подскажите как мне записать: в первую колонку:1, в второю:2, в третью:3, и в 4-ю: 4
    И пишу чтоб у каждого столбца была своя ширина, то при запуске таблица постоянно мигает. Делаю так:
    PHP:
    procedure TForm2.ValueListEditor2DrawCell(SenderTObjectAColARowInteger;
    RectTRectStateTGridDrawState);
    var 
    temp,TempWidth:integer;
    begin
    with 
    (Sender as TValueListEditor) do
    begin
    for temp:=0 to ColCount-do
    ColWidths[temp]:=Width div ColCount 2;
    ValueListEditor2.ColWidths[0] := 50;
    end;
    end;
    alexey-m не могу понять как сделать такую таблицу как на первом скриншоте, возможно у тебя есть какието ссылки или инфа как это сделать
    Зарание спасибо
     
    #11 bertys, 18 Oct 2012
    Last edited: 18 Oct 2012
  12. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      ListView: TListView;
      lc: TListColumn;
      item: TListItem;
      i: Integer;
    begin
      ListView:= TListView.Create(Self);
      with ListView do begin
    
        Parent:= Self;
        Align := alClient;
        ViewStyle:= vsReport;
    
        for i:= 0 to 3 do begin
          lc:= Columns.Add;
          lc.Width:= (Width div 4) - 1;
          lc.Caption:= IntToStr(i);
        end;
    
        for i:= 0 to 5 do begin
          item:= Items.Add;
          item.Caption:= IntToStr(i) + ':0';
          item.SubItems.Add(IntToStr(i) + ':1');
          item.SubItems.Add(IntToStr(i) + ':2');
          item.SubItems.Add(IntToStr(i) + ':3');
        end;
    
      end;
    end;
    ну и не забыть ComCtrls прописать в uses
     
  13. Vet

    Vet New Member

    Joined:
    3 Feb 2006
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Может тебе нужен StringGrid ?
     
  14. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Всем спасибо, отлично подошел компонент StringGrid
     
  15. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Вот это вот сделать нужно, чтобы не мигало...