Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 09:24   #1
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию Подскажите компонент таблицы

Строю таблицу в которой нужно перенести в ячейке значения на новую строку. Т.Е Пример

----------
1 | 4 |
2 | |
----------
3 | 6 |
----------

StringGrid не подходит даже #10#13 не хочет переносить на новую строку.
delphi is my world
XPAiN вне форума Ответить с цитированием
Старый 11.06.2008, 09:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что значит переносить? Просто переложи значение из переносимой ячейки в ячейку куда перенести нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.06.2008, 10:11   #3
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Ячейка одна но в ней написано в несколько строк
delphi is my world
XPAiN вне форума Ответить с цитированием
Старый 11.06.2008, 10:28   #4
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Можно было бы в ДБГриде увеличить высоту строки в двое, если это было бы возможно, и в обработчике ОнДравЦел рисовать строки хоть в 3-ри ряда, но увы...

Конечно я не утверждаю что нельзя, но помоему нет.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 11.06.2008, 10:40   #5
DOLBY
Форумчанин
 
Аватар для DOLBY
 
Регистрация: 12.12.2007
Сообщений: 121
По умолчанию

Даа в StringGrid'е так не получается. Попробуйте использовать DrawGrid и строки там "рисовать".
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо.

Последний раз редактировалось DOLBY; 11.06.2008 в 10:44.
DOLBY вне форума Ответить с цитированием
Старый 12.06.2008, 13:57   #6
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

VirtualStringTree, рекомендую. Хоть наискосок все выводи. Правда при изучении мозг напрячь придется.
Баламут вне форума Ответить с цитированием
Старый 13.06.2008, 15:29   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Береш TCustomControl и вперед рисовать ) думаю разделить на квадратики равного размера будет не сложно а если лень мучаться с прокрутками береш TScrollBox кажется такой компонент... и все собственоо
BOBAH13 вне форума Ответить с цитированием
Старый 13.06.2008, 16:10   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Лампочка

Нашол:
Код:
unit Wrapgrid;

interface

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Grids;

type

  TWrapGrid = class(TStringGrid)
  private
    { Private declarations }
  protected
    { Protected declarations }
    { Процедура DrawCell осуществляет перенос текста в ячейке }
    procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
      AState: TGridDrawState); override;
  public
    { Public declarations }
    { Процедура Create перекрывается для того, чтобы использовать процедуру DrawCell
    по умолчанию }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

constructor TWrapGrid.Create(AOwner: TComponent);
begin

  { Создаем TStringGrid }
  inherited Create(AOwner);

  { Заставляем компонент перерисовываться нашей процедурой по умолчанию DrawCell }
  DefaultDrawing := FALSE;
end;

{ Процедура DrawCell осуществляет перенос текста в ячейке }

procedure TWrapGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;

  AState: TGridDrawState);
var

  Sentence, { Выводимый текст }
  CurWord: string; { Текущее выводимое слово }
  SpacePos, { Позиция первого пробела }
  CurX, { Х-координата 'курсора' }
  CurY: Integer; { Y-координата 'курсора' }
  EndOfSentence: Boolean; { Величина, указывающая на заполненность ячейки }
begin

  { Инициализируем шрифт, чтобы он был управляющим шрифтом }
  Canvas.Font := Font;

  with Canvas do
  begin
    { Если это фиксированная ячейка, тогда используем фиксированный цвет }
    if gdFixed in AState then
    begin
      Pen.Color := FixedColor;
      Brush.Color := FixedColor;
    end
      { в противном случае используем нормальный цвет }
    else
    begin
      Pen.Color := Color;
      Brush.Color := Color;
    end;

    { Рисуем подложку цветом ячейки }
    Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
  end;

  { Начинаем рисование с верхнего левого угла ячейки }
  CurX := ARect.Left;
  CurY := ARect.Top;

  { Здесь мы получаем содержание ячейки }
  Sentence := Cells[ACol, ARow];

  { для каждого слова ячейки }
  EndOfSentence := FALSE;
  while (not EndOfSentence) do
  begin
    { для получения следующего слова ищем пробел }
    SpacePos := Pos(' ', Sentence);
    if SpacePos > 0 then
    begin
      { получаем текущее слово плюс пробел }
      CurWord := Copy(Sentence, 0, SpacePos);

      { получаем остальную часть предложения }
      Sentence := Copy(Sentence, SpacePos + 1, Length(Sentence) - SpacePos);
    end
    else
    begin
      { это - последнее слово в предложении }
      EndOfSentence := TRUE;
      CurWord := Sentence;
    end;

    with Canvas do
    begin
      { если текст выходит за границы ячейки }
      if (TextWidth(CurWord) + CurX) > ARect.Right then
      begin
        { переносим на следующую строку }
        CurY := CurY + TextHeight(CurWord);
        CurX := ARect.Left;
      end;

      { выводим слово }
      TextOut(CurX, CurY, CurWord);
      { увеличиваем X-координату курсора }
      CurX := CurX + TextWidth(CurWord);
    end;
  end;
end;

procedure Register;
begin
  RegisterComponents('Samples', [TWrapGrid]);
end;

end.
Alter вне форума Ответить с цитированием
Старый 13.06.2008, 17:15   #9
mahnova13
Новичок
Джуниор
 
Регистрация: 13.06.2008
Сообщений: 1
По умолчанию

А может кто подскажет компонент-таблицу, в которой можно было бы закрашивать ячейки разным цветом и выделять их?
mahnova13 вне форума Ответить с цитированием
Старый 13.06.2008, 20:02   #10
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Цитата:
Сообщение от mahnova13 Посмотреть сообщение
А может кто подскажет компонент-таблицу, в которой можно было бы закрашивать ячейки разным цветом и выделять их?
Это рисуется ручками через Canvas, в стандартном StringGrid, а называется это DrawCell.
Alter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование таблицы Miker87 Microsoft Office Excel 4 22.07.2008 13:25
Какой компонент выбрать для вывода таблицы картинок ICO Comer_Jus Мультимедиа в Delphi 3 21.05.2008 20:35
Компонент для построения графиков из таблицы БД Glizer Компоненты Delphi 3 18.04.2008 13:29
«резиновые таблицы» ATTA Microsoft Office Excel 6 30.01.2008 14:35
2 таблицы Tarnym БД в Delphi 6 02.12.2007 12:47