Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBGrid и Charcase 
:(
    Опции темы
Vit
Дата 20.11.2002, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Надо сделать чтобы в одной из колонок всегда выводилось значение поля в Uppercase.Это можно сделать? Если да, то как?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 20.11.2002, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Обрабатывать событие OnDrawColumnCell нужного DBGrid

Вот пример:
Код

if (Column.Field.FieldName = 'NAME') and not (gdFocused in State) then
   begin
     With DBGrid1.Canvas do begin
           Font.Color := clWhite;
           FillRect(Rect);
           TextOut(Rect.Left+2, Rect.Top+1, Column.Field.Text);
       end;
    end;


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

P.S. Чуть не забыл. очень важно, иначе работать не будет - там где идет
Код

Column.Field.FieldName = 'NAME'


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


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
AntonSaburov
Дата 20.11.2002, 03:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Прорисовывать DBGrid самому. Там есть какой-то обработчик - OnDrawCell или что-то еще такое.
Хотя может быть это не самый лучший вариант. Но что-то  больше ничего в голова не приходит. Надо Help смотреть, а негде :(. Машина голая - одна JAVA.
PM MAIL WWW ICQ   Вверх
Vit
Дата 20.11.2002, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Допустим нарисовал, так ведь это рисунок(или всё-таки текст?), а если я в буфер скопирую - что скопируется? А если начать редактировать текст - это будет корректно обрабатываться?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 20.11.2002, 03:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



А вообще есть еще TDataSource - OnGetText и OnSetText. Может это надо еще посмотреть ?
PM MAIL WWW ICQ   Вверх
Medved
Дата 20.11.2002, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата

Допустим нарисовал, так ведь это рисунок(или всё-таки текст?), а если я в буфер скопирую - что скопируется?


Это текст, все будет нормально....

P.S. но вообще я бы посоветовыл тебе использовать DBGridEh из библиотеки EHLib, это самый лучший DBGrid, который я видел.... там есть все что необходимо. и куча еще другого. (автоматическая сортировка убывающая и возрастающая по клику на заголовке и многое другое....) Если нужен линк, то я его уже писал в топике (он так и называется - "Самый лучший DBGrid, что я видел")


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 20.11.2002, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата

А вообще есть еще TDataSource - OnGetText и OnSetText. Может это надо еще посмотреть ?


OnDrawColumnCell - это событие для того и существует, чтобы обрабатывать такие ситуации....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 20.11.2002, 04:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата

А если начать редактировать текст - это будет корректно обрабатываться?


Пользователь сможет вводить прописные буквы, но при перересовки DBGrid, они превратяться в заглавные.

Ну, есть такой выход (при редактировании), как следить за OnKeyPress


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 20.11.2002, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(AntonSaburov @ 19.11.2002, 10:58)
А вообще есть еще TDataSource - OnGetText и OnSetText. Может это надо еще посмотреть ?

Что-то я таких там не видел...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 20.11.2002, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(Pegas @ 19.11.2002, 11:02)
P.S. но вообще я бы посоветовыл тебе использовать DBGridEh из библиотеки EHLib, это самый лучший DBGrid, который я

Я использую написанный моим другом, он вроде как покруче будет - там ещё возможности сортировки по нескольким полям и наложение фильтров на лету, хотя врать не буду - библиотеку что ты указал я не видел. Она Free? А с ней поставляются исходники?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 20.11.2002, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата

А вообще есть еще TDataSource - OnGetText и OnSetText. Может это надо еще посмотреть ?


Чего-то и я все перерыл, и не нашел такого...


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 20.11.2002, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата

Я использую написанный моим другом, он вроде как покруче будет - там ещё возможности сортировки по нескольким полям и наложение фильтров на лету, хотя врать не буду - библиотеку что ты указал я не видел. Она Free? А с ней поставляются исходники?


Все эти возможности присутствуют в DBGridEn, но еще и куча других.... Я сам его недавно, месяца два назад открыл для себя...... Но он абсолютно бесплатен, для жителей бывшего СССР (ты тоже Vit к ним относишся  :D ) там надо при распаковке ввести пароль по русски заглавными буквами наименование второго месяца (ФЕВРАЛЬФЕВРАЛЬ). Вот собственно и вся защита... поставляется с иходниками и есть демо....

Вот его описание библиотеки:
TDBGridEh поддерживает всю функциональность TDBGrid'а и добавляет новые возможности следующего содержания:
   Возможность выбирать записи, колонки и квадратные области.
   Специальные заголовки на несколько столбцов или на всю таблицу
   Возможность отображения строки (строк) внизу таблицы с показом сумм, количества записей, значение другого поля или статического текста.
   Возможность автоматического выравнивания ширины столбцов так, чтобы сумма ширины всех столбцов была равна ClientWidth
   Возможность изменения высоты строк и заголовка
   Возможность отображения строк и заголовков с переносом слов
   Заголовки колонок могут быть использованы как кнопки и отображать индикатор сортировки
   Возможность прерывать длинные строки многоточием в заголовках и строках данных
   Lookup list может отображать несколько полей
   Непрокручиваемые столбцы
   Инкрементный поиск в lookup столбцах
   Выпадающий календарь для полей типа TDateField и TDateTimeFIeld.
   Возможность показывать картинки из TImageList в зависимости от значения поля
   Возможность скрывать и отслеживать вертикальный и горизонтальный строки прокрутки.
   Возможность скрывать столбцы
   Возможность показывать 3D рамку для замороженных ячеек, ячеек нижнего колонтитула и ячеек данных
   Пропорциональная прокрутка бегунка независимо от упорядоченности номеров записей в датасэте.

TPrintDBGridEh
TPrintDBGridEh предназначена для предварительного просмотра и печати компоненты TDBGridEh со следующими возможностями:
   Возможность расширять высоту строки что бы уместить весь печатаемый текст.
   Возможность масштабирования сетки что бы уместить всю сетку в ширину на одной странице.
   Возможность печати заголовка для сетки.
   Возможность печати верхнего и нижнего колонтитула для страницы с макросами для текущей страницы, текущей даты, текущего времени или просто статического текста.

TDBLookupComboboxEh:
TDBLookupComboboxEh обеспечивает всю функциональность стандартного компонента TDBLookupCombobox и добавляет несколько новых возможностей:
   Может иметь плоский(Falt) вид.
   Позволяет присваивать значения как свойству KeyValue так и отображаемому свойству Text.
   Позволяет вводить (присваивать) свойству Text значения не содержащиеся в списке данных (Style = csDropDownEh).
   Позволяет хранить в свойствах KeyValue and Text значения не влияющие друг на друга. Это возможно когда свойства KeyField, ListField, ListSource, DataField and DataSource пусты.
   Выпадающий спискок может:
       Выводить заголовки,
       Отображать значок изменения размера окна(Size grip),
       Автоматически устанавливать ширину окна по сумме ширины всех выводимых полей (Width = -1),
       Автоматически выпадать по нажатию буквенно-цифровой клавиши.
   Кнопка редактирования может:
       Показывать изображения треугольника направленного вниз, многоточия, побитового образа.
   Имеет события: OnKeyValueChanched, OnButtonClick.

TDBSumList  
   Компонента предназначена для подсчета сумм и количества записей в TDataSet'е с динамическим отслеживанием изменений.

TPreviewBox
   TPreviewBox позволяет создавать настраиваемое окно предварительного просмотра.

TPrinterPreview object (невизуальный)
   TPrinterPreview позволяет записывать необходимые для печати данные в буфер для последующего вывода их на принтер или на экран. TPrinterPreview имеет такие же функции и свойства как и объект TPrinter. Вы можете использовать объект TPrinterPreview подобно TPrinter за исключением некоторых деталей. В TPrinter свойства Printer.Canvas.Handle и Printer.Handle это одно и тоже, а в TPrinterPreview свойство PrinterPreview.Canvas.Handle представляет хэндл метафайла а PrinterPreview.Handle представляет нэндл принтера. Это значит что в должны использовать PrinterPreview.Canvas.Handle в функциях печати (DrawText, DrawTexteEx, и т.д.) а PrinterPreview.Handle в функциях которые возвращают информацию о параметрах принтера (GetDeviceCaps, и т.д.). Глобальная функция PrinterPreview возвращает определяемый по умолчанию объект PrinterPreview и отображает данные в определяемой по умолчанию  форме предварительного просмотра.

Вот линк на страничку автора: http://www.farpost.com/personal/dmitryb/main.htm


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 20.11.2002, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Спасибо


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 20.11.2002, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Не понял, а почему нельзя:

Код

procedure TForm1.DBGridKeyPress(Sender: TObject; var Key: Char);
begin
if (DBGrid.SelectedField.FieldNо=2) then
  Key:=UpCase(Key);
end;


или

Код

procedure TForm1.DBGridKeyPress(Sender: TObject; var Key: Char);
begin
if (DBGrid.SelectedField.FieldName='F1') then
  Key:=UpCase(Key);
end;



--------------------
Волны гасят ветер...
PM MAIL   Вверх
Vit
Дата 20.11.2002, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Ну потому что это не предупредит ни вывод данных в ячейку ни ввод данных через буфер обмена, конечно, задействовав какое-то количество событий можно всё это обойти, только мне такой подход не нравится


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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