Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #31  
Старый 21.01.2012, 19:55
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Еще есть одна небольшая загвоздка. Как бы так, хорошо бы было если бы в ячейках еще был и текст (0-9). Но тут тогда получается нужно использовать другую таблицу, а там видимо загрузить все в одну ячейку будет сложнее.
Хм... добавить то добавил, но вот только текст получился за картинкой, а нужно наоборот.

Последний раз редактировалось Kaktuz, 21.01.2012 в 21:24.
Ответить с цитированием
  #32  
Старый 21.01.2012, 21:58
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Значит неправильно отрисовку делаешь. Обычно делается так, выводится сначала картинка, затем правее от неё текст.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #33  
Старый 21.01.2012, 22:57
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Значит неправильно отрисовку делаешь. Обычно делается так, выводится сначала картинка, затем правее от неё текст.
Так текст должен быть поверх изображения. А если мы его в бок сместим, так тогда получится... Получится что картинка сожмется, а этого не нужно.
Ответить с цитированием
  #34  
Старый 21.01.2012, 23:00
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Kaktuz
... Получится что картинка сожмется, а этого не нужно.
Это как выводить, но в любом случае, текст нужно вывести последним.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #35  
Старый 21.01.2012, 23:58
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Делал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Cells[1,1] := 'Text';
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
with (Sender as TStringGrid) do
  with Canvas do
    begin
      Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
    end;
end;
При запуске в каждой ячейке загружена картинка и после жмем кнопку которая грузит текст и текст остается на заднем плане относительно картинки.
Ответить с цитированием
  #36  
Старый 22.01.2012, 00:07
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Так ведь ты текст не вывел. То что ты его присвоил ячейке не означает, что он выведется на передний план.
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with (Sender as TStringGrid).Canvas do
  begin
    Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
    TextOut(Rect.Left + Font.Size, Rect.Top + 2, 'Owner Drawn text');
  end;
end;
точнее так:
Код:
procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with (Sender as TStringGrid), Canvas do
  begin
    Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
    Brush.Style := bsClear;
    if Cells[ACol, ARow] <> '' then
      TextOut(Rect.Left + Font.Size, Rect.Top + 2, Cells[ACol, ARow]);
  end;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 22.01.2012 в 00:28.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Kaktuz (22.01.2012)
  #37  
Старый 22.01.2012, 00:48
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

А.. Его нужно через обработчик вместе с картинкой кидать. Ясно. Будем пробовать.
Ответить с цитированием
  #38  
Старый 22.01.2012, 20:27
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Начудил что-то, одна хохма получилась
Добавляется, но не стирается. Ах! Да! Плюс что можно выделить несколько клеток сразу, это конечно хорошо, но вот не уверен в том что данные корректно записываются.
А возможно поправить одинарный клик на двойной?

Последний раз редактировалось Kaktuz, 22.01.2012 в 20:54.
Ответить с цитированием
  #39  
Старый 22.01.2012, 21:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

В чём начудил? Пиши понятнее.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #40  
Старый 22.01.2012, 21:47
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Ну как начудил... Просто данные не сохраняются отдельно и грузятся во всю таблицу сразу.
Вот интересует
Код:
if Button = mbLeft then
with (Sender as TDrawGrid), Canvas do
  begin
  (Sender as TStringGrid).MouseToCell(X, Y, aCol, aRow);
  StatusBar1.Panels.Items[1].Text := Format('Y = %d', [aRow]);
  StatusBar1.Panels.Items[2].Text := Format('X = %d', [aCol]);
  end;
Что бы был двойной клик в место одинарного. Возможно?
Ответить с цитированием
  #41  
Старый 22.01.2012, 21:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну так опиши этот код не на OnMouseDown, а на OnDblClick.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #42  
Старый 22.01.2012, 22:42
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Ругается
Код:
(Sender as TStringGrid).MouseToCell(X, Y, aCol, aRow);
Ответить с цитированием
  #43  
Старый 22.01.2012, 22:51
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Конечно ругается, X и Y нет во входных параметрах.
p.s. Не к этой теме, посмотри это.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter