Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Компоненты

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 26.11.2007, 19:07   #1
Неактивный пользователь
 
Регистрация: 19.09.2007
Сообщений: 4
Репутация: 0
Question Компонент StringGrid для Delphi

Поделитесь пожалуйтса ссылками на компоненты типа StringGrid, в которых возможно каждой ячейке цвет присваивать!!!
PIANOR вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: круиз на теплоходе по енисеюВентилятор радиальный YB 7Tдс кристалл - RedKassa.ruЗаходите на сайт MebelStol.ru: днс компьютерные столы игровые - отличные цены и большой выбор!msi geforce rtx 5060 ti 16g gaming oc


Старый 27.11.2007, 12:04   #2
Gerasoft
Новичок
 
Пол:Мужской
Регистрация: 19.01.2007
Сообщений: 8
Репутация: 2
По умолчанию Ответ: Компонент StringGrid для Delphi

Боюсь, таких не бывает! Ручками только писать.
Gerasoft вне форума
 
Ответить с цитированием Вверх
Старый 28.11.2007, 11:20   #3
ivan_fd
Пользователь
 
Аватар для ivan_fd
 
Пол:Мужской
Регистрация: 08.08.2007
Адрес: Украина
Сообщений: 57
Репутация: 35
По умолчанию Ответ: Компонент StringGrid для Delphi

Цитата:
Сообщение от PIANOR Посмотреть сообщение
Поделитесь пожалуйтса ссылками на компоненты типа StringGrid, в которых возможно каждой ячейке цвет присваивать!!!

В TMS Component Pack, StringGrid, помоему это может.
ivan_fd вне форума
 
Ответить с цитированием Вверх
Старый 29.11.2007, 15:48   #4
Lis_
Новичок
 
Аватар для Lis_
 
Пол:Мужской
Регистрация: 29.09.2005
Сообщений: 28
Репутация: 36
По умолчанию Ответ: Компонент StringGrid для Delphi

или используй функцию DrawCollumnCell, т.е. рисуй вручную
__________________
Я был, есть и буду есть!!!!
Lis_ вне форума
 
Ответить с цитированием Вверх
Старый 16.12.2007, 13:25   #5
ASProfi
Новичок
 
Пол:Мужской
Регистрация: 06.09.2005
Сообщений: 20
Репутация: 5
По умолчанию Ответ: Компонент StringGrid для Delphi

Цитата:
Сообщение от Lis_ Посмотреть сообщение
или используй функцию DrawCollumnCell, т.е. рисуй вручную

Что намного лучше в плане и переносимости кода и расширения собственных знаний. Если еще надо, пиши - подскажу как сделать.
ASProfi вне форума
 
Ответить с цитированием Вверх
Старый 11.01.2008, 19:20   #6
Meteor12
Неактивный пользователь
 
Регистрация: 11.01.2008
Сообщений: 1
Репутация: 1
По умолчанию Ответ: Компонент StringGrid для Delphi

Можно использовать событие OnDrawCell (прорисовка ячейки, происходит постоянно) для установки любого цвета шрифта, фона, изменения шрифта и т.д. используя вывод на канву. Это работает со стандартным stringgrig. Вот кусок из моего проекта.


void __fastcall TMainForm::LogSignTableDrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{

if(ARow)
{
LogSignTable->Canvas->Font = LogSignTable->Font; // Шрифт

if(FiltrStr[ACol]=="")
LogSignTable->Canvas->Font->Color = LogSignTable->Font->Color;
else
LogSignTable->Canvas->Font->Color = clBlue;

LogSignTable->Canvas->Brush->Color = LogSignTable->Color; // Здесь можно задать любой цвет фона

LogSignTable->Canvas->FillRect(Rect); // Закрасить выбранным фоном ячейку.


DrawText(LogSignTable->Canvas->Handle,
LogSignTable->Cells[ACol][ARow].c_str(), -1, &Rect,
(DT_SINGLELINE | DT_VCENTER | DT_NOCLIP | DT_LEFT)); // Вывести текст в ячейку используя ф-цию WinAPI
}

}

Добавлено через 10 минут
/*
Я пытаюсь показать StringGrid без выделенной ячейки. Первая нефиксированная ячейка всегда имеет
состояние "инвертированного" цвета. Я не хочу позволить пользователю редактировать сетку, но
эта выделенная ячейка производит впечатление того, что сетка имеет возможность редактирования...

Вам необходимо создать обработчик события OnDrawCell. Это легче чем вы думаете. Вот образец кода,
который сделает вас счастливым:

procedure TForm.sgrDrawCells(Sender: TObject; Col, Row: Longint; Rect: TRect;
State: TGridDrawState);
var
ACol: longint absolute Col;
ARow: longint absolute Row;
Buf: array[byte] of char;
begin
if State = gdFixed then
Exit;

with sgrGrid do
begin
Canvas.Font := Font;
Canvas.Font.Color := clWindowText;
Canvas.Brush.Color := clWindow;

Canvas.FillRect(Rect);
StrPCopy(Buf, Cells[ACol, ARow]);
DrawText(Canvas.Handle, Buf, -1, Rect,
DT_SINGLELINE or DT_VCENTER or DT_NOCLIP or DT_LEFT);
end;
end;
*/


//--------------------------------------------------------------------
/*
OnDrawCell возникает каждый раз когда компонент прорисовывает себя.
В обработчик передаются следующие параметры:
Sender: TObject
Объект, который "просит" себя нарисовать, в нашем случае это будет StringGrid.

ACol, ARow: Longint
Номер колонки и строчки. Отсчет начинается с нуля.

Rect: TRect
Идентифицурует прямоугольную область ячейки с номерами ACol:ARow.

State: TGridDrawState
Состояние ячейки. Может принимать значения:
gdSelected - выделенная ячейка,
gdFocused - ячейка имеет фокус ввода,
gdFixed - фиксированная ячейка.

//---------------------------------------------------------------------
function Windows.DrawText(hdc: HDC; lpString: PChar; nCount: integer;
var lpRect: TRect; uFromat: Cardinal):integer;

Функция DrawText выводит форматированный текст в определенном прямоугольнике.
Функция форматирует текст, согласно указанному методу (выводит табуляцию, выравнивает символы,
разрывает строки и т.д.).

hDC
Указывает на контекст устройства, напомню, что свойство Handle у TCanvas как раз и имеет тип HDC.

lpString
Строка для вывода. Если параметр nCount равен -1, строка должна быть нуль-терминированная (null-terminated), то есть заканчиваться символом #0.

nCount
Указывает количество символов в строке. Тут все ясно.

lpRect
Переменная в которой передается запись типа TRect. Именно в этот прямоугольник будет выводится наш текст.

uFormat
Определяет метод форматирования текста. Это может быть любая комбинация следующих значений
(объединенных поразрядным OR оператором):

DT_BOTTOM - Определяет выровненный по нижней части текст. Это значение должно быть объединено с DT_SINGLELINE.
DT_CALCRECT - Определяет ширину и высоту прямоугольника. Если имеются многократные строки текста,
DrawText использует ширину прямоугольника, указанного на lpRect и расширит прямоугольника к последней
строки текста. Если имеется только одна строка текста, DrawText изменит правую сторону прямоугольника так,
чтобы это ограничило последний символ в строке. В любом случае, DrawText возвращает высоту форматируемого
текста, но не выводит текст.
DT_CENTER - Выравнивает по центру текст горизонтально.
DT_END_ELLIPSIS или DT_PATH_ELLIPSIS - Заменяет часть данной строки с эллипсами, в случае необходимости, так,
чтобы результат находился в определенном прямоугольнике. Данная строка не изменяется, если флажок
DT_MODIFYSTRING не определен. Вы можете определять DT_END_ELLIPSIS, чтобы заменить символы в конце
строки, или DT_PATH_ELLIPSIS, чтобы заменить символы в середине строки. Если строка содержит
наклонную черту влево (\), символы, DT_PATH_ELLIPSIS сохраняют в максимально возможной степени
текста после последней наклонной черты влево.
DT_EXPANDTABS - Разворачивает символы табуляции. Заданное по умолчанию число символов позиций табуляции - восемь.
DT_EXTERNALLEADING - Включает внешнюю подачу шрифта в высоте строки. Обычно, внешняя подача не включена в
высоту строки текста.
DT_LEFT - Выравнивает влево текст.
DT_MODIFYSTRING - Изменяет данную строку, чтобы согласовать к отображаемому тексту.
Этот флажок не имеет никакого эффекта, если DT_END_ELLIPSIS или флажок DT_PATH_ELLIPSIS не определен.
Обратите внимание, что некоторые комбинации флажков uFormat могут заставлять переданную строку
изменяться. Использование DT_MODIFYSTRING или с DT_END_ELLIPSIS или DT_PATH_ELLIPSIS может заставлять
строку изменяться, вызывая исключение в отмене CString.
DT_NOCLIP - Выводит без отсечения. DrawText несколько быстрее, когда DT_NOCLIP используется.
DT_NOPREFIX - Выключает обработку префиксных символов. Обычно, DrawText интерпретирует символ амперсанда (и)
мнемонической схемы - префиксный символ как директива, чтобы подчеркнуть символ, который следует,
и (& &) мнемонически схема - префиксные символы с двумя символами амперсанда как директива,
чтобы печатать одиночный символ амперсанда. Определяя DT_NOPREFIX, эта обработка выключена.
DT_RIGHT - Выравнивает вправо текст.
DT_SINGLELINE - Определяет одиночную строку только. Возвраты каретки и переводы строки не разрывают строку.
DT_TABSTOP - Устанавливает табуляторы. Старший байт nFormat - число символов для каждой позиции табуляции.
Заданное по умолчанию число символов в позиции табуляции - восемь.
DT_TOP - Определяет выровненный по верху текст (одиночная строка только).
DT_VCENTER - Определяет вертикально центрированный текст (одиночная строка только).
DT_WORDBREAK - Определяет слово - breaking. Строки были бы автоматически разбиты между словами,
если слово простиралось бы дальше края прямоугольника, определенного lpRect. Последовательность переводов строки возвратов каретки также разорвет строку.

http://www.delphimaster.ru/articles/...rid/index.html
http://www.firststeps.ru/mfc/steps/help/r.php?790
*/

/*
//--------------------------------------------------------------------------
// Преобразование AnsiString в char[] с нулем в конце и обратно :
//--------------------------------------------------------------------------
AnsiString Str;
char* buf;

buf = Str.c_str();

Обратное преобразование:

Str = AnsiString(buf);
*/

Последний раз редактировалось Meteor12; 11.01.2008 в 19:30.. Причина: Добавлено сообщение
Meteor12 вне форума
 
Ответить с цитированием Вверх
Старый 12.01.2008, 14:12   #7
x128
Неактивный пользователь
 
Аватар для x128
 
Пол:Мужской
Регистрация: 12.01.2008
Адрес: CCCP
Сообщений: 62
Репутация: 23
По умолчанию Ответ: Компонент StringGrid для Delphi

...Привожу пример обработчика события OnDrawCell. Он выводит нестандартно во все ячейки, а ячейку, координаты которой совпадают с внешними параметрами SgKritCol, SgKritRow, красит желтым цветом...
Код:
procedure TfAg.SgKritDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
  var r: TRect;
begin
With Sender as TStringGrid do 
  begin
  With Canvas do
    begin
     if (SgKritCol = ACol) and (SgKritRow = ARow) then
      Brush.Color:= clYellow else Brush.Color := clWhite;
     Font.Color:= clBlack;
     FillRect(Rect);
    end;
   r:= KdnRect(Rect,0,4,-3,0);
   DrawText(Canvas.Handle, PChar(SgKrit.Cells[ACol, ARow]),
            Length(SgKrit.Cells[ACol, ARow]),r,
            DrawTextBiDiModeFlags(DT_RIGHT));
  end;
end;
взято с delphikingdom.com
x128 вне форума
 
Ответить с цитированием Вверх
Старый 08.04.2008, 13:05   #8
gev
Неактивный пользователь
 
Пол:Мужской
Регистрация: 15.10.2007
Сообщений: 13
Репутация: 1
По умолчанию Ответ: Компонент StringGrid для Delphi

Ha TMSStringGrid OnGetCellColor

procedure AdvStringGrid1GetCellColor(Sender: TObject; ARow, ACol:
Integer; AState: TGridDrawState; ABrush: TBrush; AFont: TFont);
begin
if (ARow =2) AND (ACol = 2) then
ABrush.Color := clRed;
end;
gev вне форума
 
Ответить с цитированием Вверх
Старый 08.05.2008, 18:09   #9
sirwhale
Новичок
 
Пол:Мужской
Регистрация: 26.11.2007
Сообщений: 12
Репутация: 0
По умолчанию Ответ: Компонент StringGrid для Delphi

http://www.bergsoft.net/components.htm

все что тебе надо
sirwhale вне форума
 
Ответить с цитированием Вверх
Старый 10.05.2008, 16:32   #10
ZhenO
Неактивный пользователь
 
Аватар для ZhenO
 
Регистрация: 23.12.2007
Адрес: Рязань
Сообщений: 8
Репутация: 2
По умолчанию Ответ: Компонент StringGrid для Delphi

Цитата:
Сообщение от sirwhale Посмотреть сообщение
http://www.bergsoft.net/components.htm

все что тебе надо

а не где тоже самое но только для 2007 найти можно, улыбнула эта тема)))) насчет цветных ячеек, а то ручками реально надоедает иногда
ZhenO вне форума
 
Ответить с цитированием Вверх
Старый 12.05.2008, 12:24   #11
ivan_fd
Пользователь
 
Аватар для ivan_fd
 
Пол:Мужской
Регистрация: 08.08.2007
Адрес: Украина
Сообщений: 57
Репутация: 35
По умолчанию Ответ: Компонент StringGrid для Delphi

Цитата:
Сообщение от ZhenO Посмотреть сообщение
а не где тоже самое но только для 2007 найти можно, улыбнула эта тема)))) насчет цветных ячеек, а то ручками реально надоедает иногда

В теме компоненты часть 2 поиском все есть.
ivan_fd вне форума
 
Ответить с цитированием Вверх
Старый 10.03.2009, 13:32   #12
Splice
Неактивный пользователь
 
Пол:Мужской
Регистрация: 05.12.2007
Сообщений: 2
Репутация: 0
По умолчанию Re: Компонент StringGrid для Delphi

Всегда использую в таких случаях AdvStringGrid от TMS
Splice вне форума
 
Ответить с цитированием Вверх
Старый 17.07.2009, 13:39   #13
jah1980
Неактивный пользователь
 
Регистрация: 17.07.2009
Сообщений: 1
Репутация: 0
По умолчанию Re: Компонент StringGrid для Delphi

В студенческие времена писал нечто подобное руками, но компонент получился сильно тормозной, на больших объемах тормозил ощутимо
jah1980 вне форума
 
Ответить с цитированием Вверх
Старый 17.07.2009, 17:53   #14
manimas
Неактивный пользователь
 
Регистрация: 17.07.2009
Сообщений: 1
Репутация: 0
По умолчанию Компонент StringGrid для Delphi

Поделитесь пожалуйтса ссылками на компоненты типа StringGrid, в которых возможно каждой ячейке цвет присваивать!!!
manimas вне форума
 
Ответить с цитированием Вверх
Старый 13.08.2009, 17:55   #15
weyland
Неактивный пользователь
 
Пол:Женский
Регистрация: 13.08.2009
Сообщений: 3
Репутация: -1
По умолчанию Re: Компонент StringGrid для Delphi

Либо TMS Component Pack, либо используй канву в ячейке
weyland вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid с поддержкой Unicode zark1982 Компоненты 16 10.07.2011 01:05
компонент webbrowser kirsanvi .NET 2 04.02.2009 07:50
Castalia for Delphi 2008.1 - эксперт IDE Delphi Minotawr Компоненты 0 03.09.2008 01:17
Экспорт StringGrid в Word Lis_ Borland C++ Builder 1 27.09.2007 15:09

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:21. Часовой пояс GMT +3.


Copyright ©2004 - 2025 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.09281 секунды с 11 запросами