Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > EhLib


Автор: Garmahis 18.4.2005, 19:29
для моего проекта потребовалась таблица связанная с данными обладающая большими возможностями чем стандартная. По описанию мне больше всего подходит DBGridEh. Установил библиотеку весь день мучаюсь с этой таблицей но некоторые самыке нужные настройки не получаются.
1. Как сделать что бы в самой таблице если текст длиннее колонки то строка (не все строки а именно эта строка) становилась шире и текст бы переносился?
2. При нажатии на титул строки сортировались в прямом или обратном порядке. Ато стрелочка появляется а строки ни хрена не сортируются.
3. Подстановка значения. Хм не помню как это по русски smile но вобщем в базе данных значению могут меняться от 0 до 10 и если значение 0 то в таблице пишется например удалён если 1 то пишется добален и тд.
4. Как в компоненте PrintDBGridEh задать альбомную ориентацию? В предворительном просмотре это я нашёл как делать а можно поставить это просто по умолчанию?
5. Как с помощью компонента PrintDBGridEh распечатать многостраничную таблицу чтобвы в начале каждого листа шёл титл?
Помогите пожалуйста кто работал с этими компонентами!

Автор: Alex 18.4.2005, 21:57
Модератор: Пожалуйста, один топик - один вопрос.

Автор: Петрович 19.4.2005, 08:39
Почитай повнимательнее хелп на EhLib, особенно первую страницу описания TDBGridEр, причем до конца. Там некоторые из твоих вопросов освещены.
Если какие вопросы еще останутся, задавай.

Автор: Akella 20.4.2005, 09:57
Я так сортирую
Код

procedure TfmMain.DBGridEh1TitleClick(Column: TColumnEh);
begin
  if Column.Index=0 then begin
   tPrep.IndexName:='idxPNamePPrice';
   Column.Title.SortMarker:=smDownEh;
  end;

  if Column.Index=1 then begin
   tPrep.IndexName:='idxPPricePName';
   Column.Title.SortMarker:=smDownEh;
  end;

  if Column.Index=2 then begin
   tPrep.IndexName:='idxPProducer';
   Column.Title.SortMarker:=smDownEh;
  end;

  if Column.Index=3 then begin
   tPrep.IndexName:='idxPApt';
   Column.Title.SortMarker:=smDownEh;
  end;
  if Column.Index=4 then begin
   tPrep.IndexName:='idxPDateTimeDesc';
   Column.Title.SortMarker:=smUpEh;
  end;

  case Column.Title.SortMarker of//âûáîð íàïðàâëåíèÿ ñîðòèðîâêà ìàðêåðà
    smNoneEh: Column.Title.SortMarker := smDownEh;
  end;//case
end;


Добавлено @ 10:04
отностильено печати
Код

  PrintDBGridEh1.BeforeGridText.Clear;
  PrintDBGridEh1.BeforeGridText.LoadFromFile('deftitle.rtf');

Добавлено @ 10:05
Цитата(Garmahis @ 18.4.2005, 19:29)
4. Как в компоненте PrintDBGridEh задать альбомную ориентацию? В предворительном просмотре это я нашёл как делать а можно поставить это просто по умолчанию?

Есть кнопка "Настройка принтера"

Автор: Akella 20.4.2005, 10:18
Цитата(Garmahis @ 18.4.2005, 19:29)
3. Подстановка значения. Хм не помню как это по русски  но вобщем в базе данных значению могут меняться от 0 до 10 и если значение 0 то в таблице пишется например удалён если 1 то пишется добален и тд.


Дывжды по компоненту TTable -> Выбираем поле в редакторе полей, переходим в инспектор объектов -> закладка события, щелкаем дважды по событию OnGetText

Код


procedure TfmMain.tTempTAptGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  if DisplayText then
     if StrToIntDef(Text,0) > 1 then Text := '99';
end;


Код

procedure TForm1.Table1IDGetText(Sender: TField;
  var Text: OpenString; DisplayText: Boolean);
var
  s: string;
begin
  s := (Sender as TStringField).Value;
  case s[1] of
    'A': Text := '1';
    'B': Text := '2';
    'C': Text := '3';
  else
    Text := '9'
  end;
end;

procedure TForm1.Table1IDSetText(Sender: TField; const Text: string);
var
  s: string;
begin
  case Text[1] of
    '1': s := 'A';
    '2': s := 'B';
    '3': s := 'C';
  else
    s := 'Z'
  end;
  (Sender as TStringField).Value := s;
end;


Добавлено @ 10:24
Цитата(Garmahis @ 18.4.2005, 19:29)
1. Как сделать что бы в самой таблице если текст длиннее колонки то строка (не все строки а именно эта строка) становилась шире и текст бы переносился?


Дважды щелкаем по сетке -> Выбираем в редакторе колонок нужную колонку, в инспекторе объектов ставим ей WordWrap:=True, а свойство RowLines самой таблице ставим 2 или больше.

Автор: Петрович 20.4.2005, 11:23
Цитата(dsergey @ 20.4.2005, 10:57)
Я так сортирую ....

Такой способ сортировки применим только к наборам данных построенных на tTable.
Кроме того, он не позволяет делать сортировку по нескольким полям.

Автор: Garmahis 20.4.2005, 12:10
Большое спасибо! Тока я чёй-то не впиливаю.
1.
Цитата(dsergey @ 20.4.2005, 09:57)
tPrep.IndexName

Что такое tPrep? Дельфя ругается говорит не знаю что такое.
2. Настройка то принтера есть. но вопервых в этом компоненте я нашёл возможность менять ориентацю бумаги только через привью. а во вторых мне не надо чтобы при нажатии кнопки печать вызывались дополнительно какие ни будь настройки. Эта таблица всегда должна печататься на альбомном листе...
3. Я пользуюсь АдоКуэри.

Автор: Akella 20.4.2005, 12:37
tPrep ЭТО TTable

Цитата(Garmahis @ 20.4.2005, 12:10)
Я пользуюсь АдоКуэри.

Переделывай запросами "под себя"

Автор: DimW 20.4.2005, 14:24
Цитата
Дважды щелкаем по сетке -> Выбираем в редакторе колонок нужную колонку, в инспекторе объектов ставим ей WordWrap:=True, а свойство RowLines самой таблице ставим 2 или больше.


у меня не получилось, вернее получилось, но строка (поля которой влезают в границу поля) все равно остается широкой?????????????????????????????????????????

dsergey или Петрович вчем прикол?

Автор: StayAtHome 21.4.2005, 00:55
Касательно сортировки.
Ребята, а вы читали файл .\EhLib\DataService\readme.txt?
Лично я пользуюсь методом, который там описан. Все сортируется автоматически!

Автор: Петрович 21.4.2005, 15:21
Цитата(StayAtHome @ 21.4.2005, 01:55)
Ребята, а вы читали файл .\EhLib\DataService\readme.txt?

Да не любит у нас народ читать. Мы же не читатели, мы писатели. smile
Добавлено @ 15:28
Цитата(DimW @ 20.4.2005, 15:24)
Цитата
Цитата
Дважды щелкаем по сетке -> Выбираем в редакторе колонок нужную колонку, в инспекторе объектов ставим ей WordWrap:=True, а свойство RowLines самой таблице ставим 2 или больше.

у меня не получилось, вернее получилось, но строка (поля которой влезают в границу поля) все равно остается широкой?????????????????????????????????????????

Естественно. Ты же указал высоту строк "2 или больше".
На скоько я помню, DBGridEh не позволяет делать строки разной высоты.

Автор: Garmahis 21.4.2005, 18:27
Цитата
Естественно. Ты же указал высоту строк "2 или больше".
На скоько я помню, DBGridEh не позволяет делать строки разной высоты.

А ктонить знает компонент который бы позволял?

Автор: Петрович 21.4.2005, 23:00
А что, просто вывод хинта для ячеек в которых текст не помещается в отведенном пространстве не катит?

Автор: Garmahis 22.4.2005, 10:13
К сожалению не катит совсем... Кроме того таблицу надо распечатывать....

Автор: Петрович 22.4.2005, 12:26
Тады беда.
Добавлено @ 12:27
Посмотри DevExpress. Может тамошний грид может такое.

Автор: Garmahis 23.4.2005, 11:26
Спасибо! Попробую найти...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)