|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
DBGrid доступ к строкам
есть данные полученные с помощью ADOQuery1
они выводятся в DBGrid1 все никак не могу найти способ как обратится к записям в этой DBGrid1 нету свойств Row или Cell надо всего лишь заполнить ListBox1 значениями первого столбца |
#2
|
||||
|
||||
Этих свойств нету у 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 - Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! Последний раз редактировалось Viajero, 25.07.2011 в 20:50. |
#3
|
||||
|
||||
ну так оставь в DBGrid1 только первый столбец тогда и ListBox1 не нужен)
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
нашел ehlib 5.3 (http://rghost.ru/4706141)
но совершенно не знаю как устанавливать можете подсказать что делать с этими файлами? |
#5
|
||||
|
||||
Файлы dpk нужно запустить, а вообще ещё руководство к нему есть (отдельно в интернете можно найти). Кстати этот пакет какой-то неполный. У меня был 5.2 с руководством и с exe инстоллером. A чем не устроил VUBComps?
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! |
#6
|
|||
|
|||
Цитата:
потом ошибка : E2065 Unsatisfied forward or external declaration 'TDBGridVUB.Register' |
#7
|
|||
|
|||
а не, END надо поставить перед Register , тогда нет ошибок.
Как теперь вытащить компонент на панель инструментов? Последний раз редактировалось yurayura, 26.07.2011 в 13:46. |
#8
|
|||
|
|||
подстава
свойство Row имеет тип Integer |
#9
|
||||
|
||||
Я делал по другому. Используется обычный TDBGrid, если нужно использовать "новые" свойства например Row, пишется:
Код:
(DBGrid1 as TDBGridVUB).Row Метод Register при этом не нужен. Его можно удалить. Ну и юнит не забыть подключить. - Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! |
#10
|
|||
|
|||
толку от свойства Row который Integer
нужно получить данные из ячейки конкретной строки например в TstringGrid есть Cells[i,j]... ахтунг какойто, уже второй день мучаюсь с этой ерундой |
#11
|
||||
|
||||
Так а не вариант напрямую к полям ADOQuery обращаться, например через свойство FieldByName.
Или если их нужно вынести в ListBox, то использовать DBListBox он всё автоматом подцепит |
#12
|
||||
|
||||
Если не ошибаюсь (могу и ошибаться), эти свойства только для чтения.
Вообщето свойства Row и Col могут использоваться для того например, что бы узнать, в какой строке и столбце находится курсор, или реже в какой строке и столбце находятся какие-то данные в данный момент. А вот зачем вам доступ к определённой строке?? ТDBGrid в отличии от TstringGrid связан с данными, и номер строки не будет постоянный. Он меняется при прокручивании. Но у вас же есть доступ к Dataset, почему не использовать его? - Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! |
#13
|
||||
|
||||
Пример (не очень хороший):
Код:
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
|
|||
|
|||
как я понял вы использовали индекс при просмотре данных?
то есть вы последовательно просматривали все содержимое и считывали у меня запрос SELECT DISTINCT Продукция FROM [Лист1$] Метод Next тогда будет двигаться по найденным (возвращенным запросом) записям или по всем записям в БД? |
#15
|
|||
|
|||
нашел более полный 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? |