![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посоветуйте плз при помощи какого компонента сделать? [D7, XP]
advise © (2011-02-28 14:59:00)Добрый день, подскажите плз на каком компоненте реализовать такую задачу.
Есть таблица (размер задается пользователем) также пользователь может задать цвет каждой ячейки таблицы , при помощи смешения трех цветов(допустим будет вводить их 0-255 в поле Edit) , а выбранная ячейка изменять цвет.
Тяни-Толкай (2011-03-01 09:50:00) [1]Хотя нет, все же 42
Тяни-Толкай (2011-03-01 09:50:00) [2]47
Тяни-Толкай (2011-03-01 09:49:00) [3]>> В итоге работы программы цвет выбранной ячейки не меняется
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Edit1.Text:=(Inttostr(TrackBar1.Max-TrackBar1.Position));
StringGrid1.Invalidate; // Это заставит систему перерисовать весь StringGrid1 заново
// Но лучше перерисовывать только текущую ячейку, используя InvalidateRect(StringGrid1.Handle, ...)
end;
>> то у ней появляется цвет первой ячейки
Он не "появляется", ты его сам рисуешь в TForm1.StringGrid1OnDrawCell().
>> а у первой ячейки цвет не сохраняется.
А почему он должен сохраняться? И где он должен храниться?
>> 1). Как сделать чтобы при снятии выделения с ячейки ее цвет сохранялся?
Он сам сохраняться не будет. Сохранять цвет ячейки - твоя задача.
>> 3). На сколько мои вопросы тупые?
42
Германн (2011-03-01 02:56:00) [4]
> В итоге работы программы цвет выбранной ячейки не меняется
А чему равен DefaultDrawing?
Германн (2011-03-01 02:50:00) [5]
> Юрий Зотов © (28.02.11 23:38) [19]
>
> О! Я тоже в 15 лет не знал, что такое Delphi. Коллега!
>
:)
advise (2011-03-01 00:47:00) [6]Посоветуйте в чем может быть дело? Написал программу изменение цвета выбранной ячейки StringGrid в зависимости от положения трех trackBaroв на каждый цвет RGB. Цвет ячейки stringGrid меняется в обработчике StringGrid1OnDrawCell
Обработка первого трэк бара , остальные два также
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Edit1.Text:=(Inttostr(TrackBar1.Max-TrackBar1.Position));
end;
Обработчик StringGrid1OnDrawCell
procedure TForm1.StringGrid1OnDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var i:integer;
begin
i:=1;
form1.Memo1.Lines.Append('i='+inttostr(i)+' '); // печать, попал в обработчик
if (gdSelected in State) then // выбрана ячейка
begin
StringGrid1.Canvas.Brush.color:=RGB(
TrackBar1.Max-TrackBar1.Position+TrackBar1.Min,
TrackBar2.Max-TrackBar2.Position+TrackBar2.Min,
TrackBar3.Max-TrackBar3.Position+TrackBar3.Min);
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;
В итоге работы программы цвет выбранной ячейки не меняется , но если выбрать следующую ячейку , то у ней появляется цвет первой ячейки, а у первой ячейки цвет не сохраняется.
Вопрос
1). Как сделать чтобы при снятии выделения с ячейки ее цвет сохранялся?
2). Как сделать чтобы изменялся цвет текущей выбранной ячейки?
3). На сколько мои вопросы тупые?
Amoeba_ (2011-03-01 00:12:00) [7]
> Может книжку посоветуете
Посоветую:
http://podgoretsky.com/ddp/OtherDDP.aspx
P.S. Анатолий, неужели так трудно быть милосердным и сразу послать несчастного "чайника" на свой сайт за умом-разумом?
Юрий Зотов (2011-02-28 23:38:00) [8]О! Я тоже в 15 лет не знал, что такое Delphi. Коллега!
Германн (2011-02-28 23:26:00) [9]
> Может книжку посоветуете
http://www.delphimaster.ru/books/1656145/
advise (2011-02-28 23:09:00) [10]
> парадигма компонентокидательского подхода все портит...
> не умеет он писать, не научится, пусть платит, фикли
Может книжку посоветуете , те книги что у меня есть, рассматривают работу с готовыми компонентами , не объясняя как на основе этих компонентов создать новый с новыми св-ми и методами.
Просто описан компонент его методы и св-ва.
Palladin (2011-02-28 19:05:00) [11]парадигма компонентокидательского подхода все портит... не умеет он писать, не научится, пусть платит, фикли
И. Павел (2011-02-28 18:56:00) [12]В событии OnDrawColumnCell StringGrid можно что угодно делать:
http://www.sql.ru/forum/actualthread.aspx?tid=322349
http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=StringGrig%D1%80%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D1%82%D1%8C#q=StringGrid+%D1%80%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D1%82%D1%8C&hl=ru&newwindow=1&prmd=ivnsfd&ei=68JrTefGJMiAOvyTvJEL&start=10&sa=N&fp=7171aac799310be8
PS: Автору вопроса 15 лет, если не притворяется. Я в 15 лет что такое Delphi-то не знал. И даже традиционное высшее образование в анкете не поставил. Поощрять надо :)
Игорь Шевченко (2011-02-28 18:47:00) [13]У меня готовый компонент есть, даже писать не надо. Продам дорого
Anatoly Podgoretsky (2011-02-28 16:37:00) [14]> advise (28.02.2011 16:06:05) [5]
Его нет на вкладках
Противный (2011-02-28 16:27:00) [15]advise © (28.02.11 16:22) [11] спасибо!
Успел таки! Молодец!
А теперь отправь СМС с текстом Advise© на короткий номер 1234567890, и стань участником розыгрыша модуля Unit1.pas! Спеши! Разыгрывается всего 2 экземпляра!
advise (2011-02-28 16:22:00) [16]спасибо!
Dennis I. Komarov (2011-02-28 16:20:00) [17]
> Противный (28.02.11 16:12) [9]
Сгинь, нечистый...
Противный (2011-02-28 16:12:00) [18]В grids он
Даня, я же тебя просил, не пали гешефт, вечно ты со своим альтруизмом...
Dennis I. Komarov (2011-02-28 16:10:00) [19]В grids он
Противный (2011-02-28 16:09:00) [20]advise © (28.02.11 16:06) [5] Где TCustomGrid находится , облазил все вкладки D7, не нашел?
Пошли СМС с текстом TCustomGrid на короткий номер 1234567890, и получишь код разблокировки секретной вкладки с TCustomGrid!
Внимание! Акция! Отправившему СМС в течение 10 минут - бесплатная разблокировка вкладки с TComponent!