Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление записи в ячеку схGrid, работа с cxGrid 
V
    Опции темы
virtualmacar
Дата 11.9.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Есть схGrid. Заполняется соответственно С БД, так вот, необходимо в зависимости от некоторого условия добавить в ячейку текст '+1'  ,ну в таком стиле.. и мало того чтобы добавляемый текст был другого  цвета . Я пробовал через cxGrid1DBTableView1CustomDrawCell ладу не дал.. Есть какие нибудь предложения по этому поводу   
PM MAIL   Вверх
Akella
Дата 11.9.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(virtualmacar @  11.9.2009,  16:33 Найти цитируемый пост)
Заполняется соответственно С БД,

заполняется тобой или подключена к таблице?

Добавлено @ 21:14
Цитата(virtualmacar @  11.9.2009,  16:33 Найти цитируемый пост)
Я пробовал через cxGrid1DBTableView1CustomDrawCell ладу не дал.. 

ошибка в 17-ой строке

Добавлено @ 21:14
Цитата(virtualmacar @  11.9.2009,  16:33 Найти цитируемый пост)
Есть какие нибудь предложения по этому поводу    

На любой вопрос - ЛЮБОЙ ОТВЕТ  smile 



Добавлено @ 21:18
Цитата(virtualmacar @  11.9.2009,  16:33 Найти цитируемый пост)
необходимо в зависимости от некоторого условия добавить в ячейку текст '+1' 


так?
Код

if условие then
  begin
    cxGrid1DBTableView1.datacontroller.Edit;
    cxGrid1DBTableView1.datacontroller.values[cxGrid1DBTableView1.datacontroller.FocuserRecord, Colum1.Index] :=
         cxGrid1DBTableView1.datacontroller.values[redordID, Colum1.Index] + '+1';
    cxGrid1DBTableView1.datacontroller.Post;




Это сообщение отредактировал(а) Akella - 11.9.2009, 21:18
PM MAIL   Вверх
virtualmacar
Дата 13.9.2009, 13:31 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Цитата

заполняется тобой или подключена к таблице?

Подключена к таблице
По поводу кода
Код

if условие then
  begin
    cxGrid1DBTableView1.datacontroller.Edit;
    cxGrid1DBTableView1.datacontroller.values[cxGrid1DBTableView1.datacontroller.FocuserRecord, Colum1.Index] :=
         cxGrid1DBTableView1.datacontroller.values[redordID, Colum1.Index] + '+1';
    cxGrid1DBTableView1.datacontroller.Post;


cxGrid1DBTableView1.datacontroller.FocuserRecord непонятно а какая рекорд  именно будет Focused
Colum1.Index почему именно Column1 ? мне нужны все ячейки,  и Index.. какой индекс

Проще говоря непонятно мне на какой метод сxGrida повесть обработчик чтобы он адекватно возвращал "координаты ячейки" и значение которое можно бы было поменять... 

Я написал  "координаты ячейки" потому что я уже запутался блин ITem.index Row.index или Column чё там ешё, Через что то там ещё, по моему программисты Dev Express были сильно пьяны когда писали код ) 

P.S спасибо за понимание
PM MAIL   Вверх
Akella
Дата 14.9.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(virtualmacar @  13.9.2009,  13:31 Найти цитируемый пост)
cxGrid1DBTableView1.datacontroller.FocuserRecord непонятно а какая рекорд  именно будет Focused

Тебе пояснить, что такое "фокус ввода"?

Добавлено @ 09:43
Цитата(virtualmacar @  13.9.2009,  13:31 Найти цитируемый пост)
Colum1.Index почему именно Column1 ? мне нужны все ячейки,  и Index.. какой индекс

В один момент времени можно ручками редактировать только одну ячейку, если, конечно, ты не Гуддини  smile

Добавлено @ 09:44
Цитата(virtualmacar @  13.9.2009,  13:31 Найти цитируемый пост)
Colum1.Index почему именно Column1 ?

Ну подставь имя своих колонок

Добавлено @ 09:51
Цитата(virtualmacar @  13.9.2009,  13:31 Найти цитируемый пост)
мне нужны все ячейки,

Кашмар, а до такого додуматься совсем уже лень?
Код

if условие then
  begin
    cxGrid1DBTableView1.datacontroller.Edit;

    cxGrid1DBTableView1.datacontroller.values[cxGrid1DBTableView1.datacontroller.FocuserRecord, Colum1.Index] := новое значение;

    cxGrid1DBTableView1.datacontroller.values[cxGrid1DBTableView1.datacontroller.FocuserRecord, Colum2.Index] := новое значение;

    cxGrid1DBTableView1.datacontroller.values[cxGrid1DBTableView1.datacontroller.FocuserRecord, Colum3.Index] := новое значение;

    cxGrid1DBTableView1.datacontroller.Post;


вместо Colum3.Index можно 
Код

GetColumnByFieldName('Имя поля в наборе данных').Index
//поясняю: набор данных = TDataSet, TDataSet - это набор данных, к которому привязан грид (TAdoQuery, TpFibDataSet, TTable)



Цитата(virtualmacar @  13.9.2009,  13:31 Найти цитируемый пост)
и Index.. какой индекс

Ты не знаешь что такое Column?
Column - это колонка грида. У каждой колонки есть много свойств и методом, в том числе и индекс. Каждая колонка имеет индекс - номер по порядку, начиная с нуля.

Да ты хоть свойства-то изучи в диспетчере свойств.

И ещё, очень советую в справке по ExpressQuantumGrid прочитать НУ ХОТЯ БЫ ДЛЯ НАЧАЛА Fundametnals и Basic Concepts, чтобы иметь начальные представления ExpressQuantumGrid. 

А то ты сейчас весь форум забросаешь простейшими вопросами. Мало того, на официальном сайте есть примеры, справка и видео.

Добавлено @ 09:52
Цитата(virtualmacar @  13.9.2009,  13:31 Найти цитируемый пост)
Я написал  "координаты ячейки" потому что я уже запутался блин ITem.index Row.index или Column чё там ешё, Через что то там ещё, по моему программисты Dev Express были сильно пьяны когда писали код ) 

Советую пересесть на стандартный DBGrid!! smile

Добавлено через 13 минут и 29 секунд
Цитата(virtualmacar @  13.9.2009,  13:31 Найти цитируемый пост)
я уже запутался блин ITem.index Row.index или Column 

Мало того, советую ещё и начать изучение английского. Если ты не знаешь, что такое Column, а что такое Row, то тебе будет очень тяжело. Я не хвастаюсь, что я знаю хорошо английский, но, по крайней мере, строку грида от колонки грида могу отличить.


В тырнете много информации и примеров на русском, но справки на русском нет.

Это сообщение отредактировал(а) Akella - 14.9.2009, 09:54
PM MAIL   Вверх
virtualmacar
Дата 14.9.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Akella не ругайся пожалуйста у меня очень большой проект.. английский я знаю хорошо.. и свойства схGrida я тоже изучал... тем более не надо объяснять что такое набор данных. мне приходиться очень много писать кода и на разных языках разных компонентах, разных методах, я читаю немерено документации и голова уже просто кипит, работаю сутками и если задаю простые вопросы это не от незнания или глупости, просто в голове каша.. и я могу начать копаться и через такие дебри вылазить что самому страшно.. в такой ситуации элементарные решения просто теряются в дебрях.. вот за таким решениями я к вам и обратился 
PM MAIL   Вверх
Akella
Дата 14.9.2009, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(virtualmacar @  14.9.2009,  19:20 Найти цитируемый пост)
Akella не ругайся пожалуйста

Я нее ругаюсь.


Цитата(virtualmacar @  14.9.2009,  19:20 Найти цитируемый пост)
английский я знаю хорошо

Тогда в чём трудности перевода слов Column, Record и Row?


Цитата(virtualmacar @  14.9.2009,  19:20 Найти цитируемый пост)
вот за таким решениями я к вам и обратился  

Если ты достаточно квалифицированный программист, то задай вопрос по-человечески. Т.е. твоё первое сообщение наводи на мысли, что ты новичёк.
PM MAIL   Вверх
virtualmacar
Дата 15.9.2009, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Изначально меня конечно больше волновала проблема раскраски текста в ячейки в разные цвета, т.е +1 зелёным -2 красным и т.д. 
10+1-5 вот так вот.. попытался вывести текст в обработчике ОnDrawCell на что вылезла ошибка, поэтому я и спрашиваю про обращение к тексту в  ячейке, может туплю) 
Цитата

Ну подставь имя своих колонок

я бы с радостью подставил но cxGrid формируется из View который в свою очередь формируется хранимкой, поэтому столбцов и строк может быть разное количество..
Цитата

Тогда в чём трудности перевода слов Column, Record и Row?

Проблем понимания то нет, просто структура обращения к данным сxGrida несколько необычна, может просто потому что не работал с ним рань

Вопрос про цвет конечно остается актуальным.. я пробовал перехватить отрисовку текста на канве ячейки, ниже покажу как примерно  я делал.. ТехтOut даёт ошибку.. проблема по моему со смещением..или с указателем на строку. ХЗ короче  
Код

procedure TEditOtkorm.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var handle : HDC;
    Rect : Trect;
    i : integer;
    st : string;
 begin
  rect.Left := 0;
  rect.Top := 0;
  handle :=  ACanvas.Handle;
  SetTextColor(handle,clBlack);
  st :=  AViewInfo.Text;
  for i := 1 to 5 do
   begin
    if (i > 2) then SetTextColor(handle,clred);
    TextOut(handle, Rect.Left+i, Rect.Top, Pchar(st[i]) ,  1);
   end

end;

end

Истина где то рядом.

Это сообщение отредактировал(а) virtualmacar - 15.9.2009, 08:14
PM MAIL   Вверх
Akella
Дата 15.9.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(virtualmacar @  15.9.2009,  08:09 Найти цитируемый пост)
Изначально меня конечно больше волновала проблема раскраски текста в ячейки в разные цвета, т.е +1 зелёным -2 красным и т.д. 
10+1-5 вот так вот.. 

В тырнете есть примеры.

Добавлено через 42 секунды
Цитата(virtualmacar @  15.9.2009,  08:09 Найти цитируемый пост)
поэтому столбцов и строк может быть разное количество..

и что с того smile

Добавлено через 1 минуту и 31 секунду
Цитата(virtualmacar @  15.9.2009,  08:09 Найти цитируемый пост)
бращения к данным сxGrida несколько необычна

Ну я ж говорю, тогда лучше используй стандартный DBGrid.

Добавлено через 2 минуты и 23 секунды
Цитата(virtualmacar @  15.9.2009,  08:09 Найти цитируемый пост)
Вопрос про цвет конечно остается актуальным.. я пробовал перехватить отрисовку текста на канве ячейки, ниже покажу как примерно  я делал.. ТехтOut даёт ошибку.. проблема по моему со смещением..или с указателем на строку. ХЗ короче  

Короче почитай справку, посмотри примеры про CustomDrawCell.

Добавлено через 2 минуты и 48 секунд
Цитата(virtualmacar @  15.9.2009,  08:09 Найти цитируемый пост)
Истина где то рядом.

Да именно. Только лень её найти.
PM MAIL   Вверх
virtualmacar
Дата 18.9.2009, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Спасение утопающих дело рук самих утопающих. Привожу код как сделать что я хотел разноцветный текст в ячейке cxGrida
Код

procedure TEditOtkorm.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var 
    Rect : Trect;
    sum : variant;
    AIndex: Integer;
    AValue: Variant;
   num : Variant
 begin

  AIndex := TcxGridTableDataCellViewInfo(AViewInfo).Item.Index;
  AValue := Sender.DataController.GetValue(AviewInfo.GridRecord.Index,AIndex);
  ACanvas.Brush.Color := AViewInfo.Params.Color;
  ACanvas.FillRect(AViewInfo.Bounds);
  AViewInfo.LookAndFeelPainter.DrawBorder(ACanvas, AViewInfo.Bounds);
  ACanvas.Font.Assign(AViewInfo.Params.Font);
  ACanvas.Font.Color := AViewInfo.Params.TextColor;
  num := 15;
 if (AValue <> null) and (AValue < num)  then  
   begin
     ACanvas.Brush.Style := bsClear;
     ACanvas.DrawTexT(AViewInfo.Text, AViewInfo.TextAreaBounds, DT_LEFT, True);
     Rect := AViewInfo.TextAreaBounds;
     Rect.Left := Rect.Left + 14;
     ACanvas.Brush.Style := bsClear;
     ACanvas.Font.Color := clRed;
     ACanvas.DrawTexT('+5', Rect, DT_LEFT, True);
   end
else
   begin
     ACanvas.Brush.Style := bsClear;
     ACanvas.DrawTexT(AViewInfo.Text, AViewInfo.TextAreaBounds, DT_LEFT, True);
   end;
 Adone := true;


end;

Этот код добавляет +5 красным цветом
PM MAIL   Вверх
Akella
Дата 18.9.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Покажи снимок окна

Добавлено через 18 секунд
А то у тебя код что-то слишком навороченный
PM MAIL   Вверх
virtualmacar
Дата 18.9.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Снимок окна уже с готовой программы..значение которое после '+' красным цветом равно значению ячейки так надо короче.
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0886 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.