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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2011, 03:21   #1
Grass-snake
Новичок
Джуниор
 
Регистрация: 24.10.2011
Сообщений: 2
По умолчанию StringGrid: вставка картинок

Всем привет!
У меня появилось задание: нужно нарисовать кружок (Canvas) в ячейке StringGrid, но только текстом с текстом.
Например так: "Текст + Круг + Текст". Все это в одной ячейке.
Так, чтобы ни текст, ни круг не перекрывали друг друга. Когда пытаюсь это сделать, получается что круг рисуется поверх текста.

Если необходимо, могу загружать картинку из TImageList.
Если обычный StringGrid не может это, готов использовать другой компонент, аналог StringGrid.
Редактирование текста не нужно.
Grass-snake вне форума Ответить с цитированием
Старый 24.10.2011, 08:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Когда пытаюсь это сделать, получается что круг рисуется поверх текста.
Видать координаты путаешь. Показывай как отрисовываешь, все там норм:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1,1]:='текст1 текст2';
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i,p:integer;
begin
 with TStringGrid(sender) do begin
   if Cells[ACol,ARow]='' then exit;
   Canvas.FillRect(Rect);
   p:=pos(' ',Cells[ACol, ARow]);
   i:=Canvas.TextWidth(copy(Cells[ACol, ARow],1,p));
   Canvas.TextOut(Rect.Left,Rect.Top,copy(Cells[ACol, ARow],1,p));
   Rect.Left:=Rect.Left+i;
   Canvas.Ellipse(Rect.Left,Rect.Top,Rect.Left+10,Rect.Top+10);
   Rect.Left:=Rect.Left+10;
   Canvas.TextOut(Rect.Left,Rect.Top,copy(Cells[ACol, ARow],p,Length(Cells[ACol, ARow])));
 end;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2011, 15:00   #3
Grass-snake
Новичок
Джуниор
 
Регистрация: 24.10.2011
Сообщений: 2
По умолчанию

Спасибо большое за код, всё работает!
А я просто рисовал текст на канве...
Grass-snake вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка данных в шаблон документа в ячейку Excel из StringGrid artemavd Общие вопросы Delphi 4 29.05.2011 14:49
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
Вставка картинок в текстовый документ PONKA Общие вопросы Delphi 0 04.02.2009 12:54
Вставка столбца в StringGrid artemavd Общие вопросы Delphi 8 29.07.2008 17:48
Вставка в stringgrid combobox-а. Иван1 Компоненты Delphi 3 25.05.2007 09:12