Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.07.2011, 19:05
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию DBGrid доступ к строкам

есть данные полученные с помощью ADOQuery1
они выводятся в DBGrid1
все никак не могу найти способ как обратится к записям в этой DBGrid1
нету свойств Row или Cell
надо всего лишь заполнить ListBox1 значениями первого столбца
Ответить с цитированием
  #2  
Старый 25.07.2011, 19:27
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Этих свойств нету у TDBGrid, но есть у TCustomGrid (они protected и можно их вытащить в классе-наследнике).
Можно попробовать это:
Код:
{

Код улучшенного TDBGrid, имеющего свойства Col,

Row и Canvas и метод CellRect. Это чрезвычайно

полезно в случае, если вы, к примеру, хотите

получить выпадающий список на месте редактируемой

пользователем ячейки.

}

 

unit VUBComps;

 

interface

 

uses

 

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, Grids, DBGrids, DB, Menus;

 

type

 

TDBGridVUB = class(TDBGrid)

private

   { Private declarations }

protected

   { Protected declarations }

public

   property Canvas;

   function CellRect(ACol, ARow: Longint): TRect;

   property Col;

   property Row;

 

   procedure Register;

 

implementation

 

procedure Register;

begin

 

RegisterComponents('VUBudget', [TDBGridVUB]);

end;

 

function TDBGridVUB.CellRect(ACol, ARow: Longint): TRect;

begin

 

Result := inherited CellRect(ACol, ARow);

end;

 

end.
 

 

 

 

©Drkb::03050

       

Взято с http://delphiworld.narod.ru
Можно также попробовать найти и установить компоненты EhLib, там есть очень навороченный TDBGridEh с нужными свойствами.
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!

Последний раз редактировалось Viajero, 25.07.2011 в 20:50.
Ответить с цитированием
  #3  
Старый 25.07.2011, 20:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну так оставь в DBGrid1 только первый столбец тогда и ListBox1 не нужен)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 25.07.2011, 21:15
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

нашел ehlib 5.3 (http://rghost.ru/4706141)
но совершенно не знаю как устанавливать
можете подсказать что делать с этими файлами?
Ответить с цитированием
  #5  
Старый 26.07.2011, 11:50
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Файлы dpk нужно запустить, а вообще ещё руководство к нему есть (отдельно в интернете можно найти). Кстати этот пакет какой-то неполный. У меня был 5.2 с руководством и с exe инстоллером. A чем не устроил VUBComps?
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #6  
Старый 26.07.2011, 13:09
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

Цитата:
Сообщение от Viajero
A чем не устроил VUBComps?
пропущен end перед implementation
потом ошибка : E2065 Unsatisfied forward or external declaration 'TDBGridVUB.Register'
Ответить с цитированием
  #7  
Старый 26.07.2011, 13:16
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

а не, END надо поставить перед Register , тогда нет ошибок.
Как теперь вытащить компонент на панель инструментов?

Последний раз редактировалось yurayura, 26.07.2011 в 13:46.
Ответить с цитированием
  #8  
Старый 26.07.2011, 14:02
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

подстава
свойство Row имеет тип Integer
Ответить с цитированием
  #9  
Старый 26.07.2011, 14:13
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Я делал по другому. Используется обычный TDBGrid, если нужно использовать "новые" свойства например Row, пишется:
Код:
(DBGrid1 as TDBGridVUB).Row 

Метод Register при этом не нужен. Его можно удалить.
Ну и юнит не забыть подключить.
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #10  
Старый 26.07.2011, 14:36
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

толку от свойства Row который Integer
нужно получить данные из ячейки конкретной строки
например в TstringGrid есть Cells[i,j]...

ахтунг какойто, уже второй день мучаюсь с этой ерундой
Ответить с цитированием
  #11  
Старый 26.07.2011, 14:46
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Так а не вариант напрямую к полям ADOQuery обращаться, например через свойство FieldByName.

Или если их нужно вынести в ListBox, то использовать DBListBox он всё автоматом подцепит
Ответить с цитированием
  #12  
Старый 26.07.2011, 14:53
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Если не ошибаюсь (могу и ошибаться), эти свойства только для чтения.
Вообщето свойства Row и Col могут использоваться для того например, что бы узнать, в какой строке и столбце находится курсор, или реже в какой строке и столбце находятся какие-то данные в данный момент. А вот зачем вам доступ к определённой строке?? ТDBGrid в отличии от TstringGrid связан с данными, и номер строки не будет постоянный. Он меняется при прокручивании. Но у вас же есть доступ к Dataset, почему не использовать его?
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #13  
Старый 26.07.2011, 15:02
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Пример (не очень хороший):
Код:
ppFIBQuery.SQL.Text:=SQLstring;
  ppFIBQuery.ExecQuery;
  while not ppFIBQuery.Eof do ppFIBQuery.Next;
  cLength:=ppFIBQuery.RecordCount;
  ppFIBQuery.ExecQuery;
  SetPopupLength(cLength);

  for cCount:=0  to  cLength-1 do begin
    iID:=ppFIBQuery.FldByName[IdFldName].AsInteger;
    sID:=ppFIBQuery.FldByName[IdFldName].AsString;
    sValue:=ppFIBQuery.FldByName[ValueFldName].AsString;
  ............ здесь можно, например, ListBox1 заполнять

    ppFIBQuery.Next;
  end;
  ppFIBQuery.Close;
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием
  #14  
Старый 26.07.2011, 15:24
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

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

у меня запрос
SELECT DISTINCT Продукция
FROM [Лист1$]

Метод Next тогда будет двигаться по найденным (возвращенным запросом) записям или по всем записям в БД?
Ответить с цитированием
  #15  
Старый 26.07.2011, 16:52
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

нашел более полный Ehlib 5.3
http://depositfiles.com/files/goyxs7zrt

В ReadMe все прошло до слов
In "Package..." window click "Compile" button to compile the package
and then click "Install" button to register EhLib components on
the component palette.

вот где замена этой кнопки Instal для Delphi XE?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter