-
> А вот список этих строк через него не получить. да ну? а ты его методы изучил?
recno ты не получишь, его нет, а вот отображаемые на грид записи запросто. (просто не надо думать в стиле stringgrid-а... что там будет чтото подобное cells[1, 1]...)
-
> да ну? а ты его методы изучил?
в паблике: constructor Create(AGrid: TCustomDBGridEh);
destructor Destroy; override;
function AddMapping(const FieldName: string): Boolean;
procedure ClearMapping;
procedure Modified;
procedure Reset;
property DefaultFields: Boolean read GetDefaultFields;
property FieldCount: Integer read FFieldCount;
property Fields[I: Integer]: TField read GetFields;
property SparseMap: Boolean read FSparseMap write FSparseMap; единственное что подходит - Fields, но он какой-то странный, если честно... > recno ты не получишь, его нет, а вот отображаемые на грид > записи запросто
подскажи плз как, если не трудно. у меня к вечеру башка уже не варит не фига (
-
См. TDataLink.BufferCount, ActiveRecord
-
> в паблике: а в паблике предка? ...
> единственное что подходит - Fields, но он какой-то странный, если честно... чего же в нем странного? это и есть текущая(активная) запись, все поля в порядке в каком они в гриде в "шапке" отображаются. хотя, если порядок не нужен можно и через DataSet из непосредственно датасета их выбрать. в момент например отрисовки записи (событии) активная запись уже установлена, в другой момент (хз. какой. ты так ничего и показал конкретного, где и что делаешь. а перечислять все возможное лень...) ее надо сохранять и восстанавливать после работы (иначе данные в гриде "поплывут", будут не на своих местах).
> подскажи плз как, если не трудно. что именно? как из поля значение достается? это ты должен и так, и + уметь работать с "генофондом" тоже, раз уж взялся компоненты переделывать.
-
> См. TDataLink.BufferCount, ActiveRecord
Точно! Спасибо большое, всё работает )
-
> чего же в нем странного? это и есть текущая(активная) запись, > все поля в порядке в каком они в гриде в "шапке" отображаются. > хотя, если порядок не нужен можно и через DataSet из непосредственно > датасета их выбрать.
Странно то, что возвращается тип TField, вместо TFieldList или TFieldS. Но это не важно.
> в момент например отрисовки записи (событии) активная запись > уже установлена, в другой момент (хз. какой. ты так ничего > и показал конкретного, где и что делаешь. а перечислять > все возможное лень...) ее надо сохранять и восстанавливать > после работы (иначе данные в гриде "поплывут", будут не > на своих местах).
Сейчас делаю так: в OnGetCellParams if Length(dataset.FieldByName('field').AsString)>50 then //Чисто для проверки grid.RowHeights[grid.DataLink.ActiveRecord]:=Canvas.TextHeight('Щ')*4;
работает замечательно. НО не работает скролл (( в том плане, что при большом кол-ве записей курсор уезжает вниз, но на экране всё равно остаются первые записи (( Я так понимаю, это из-за того, что процедура скролла оперирует тупо RowHeight, а не считает RowHeightS (( Завтра буду дальше разбираться. Большое спасибо за помощь!
-
> Странно то, что возвращается тип TField, не тип TField, а массив из них... вместо > вместо TFieldList или TFieldS. тип список? а как ты им будеш обеспечивать порядок записей? какими усилиями, вместо простой перестановки в массиве (при перетаскивании заголовка на другое место)
> Но это не важно. конечно не важно. ты почемуто решил, заранее, еще ничего не зная про изучаемый компонент, как он должен быть устроен... потом удивляешься, что реальность не совпадает с твоими "мечтами", вместо того чтобы думать - "а почему сделано так, а не иначе. зачем так делалось"... ты с таким стилем мышления вместо того чтобы учится программировать, учишься все обхаивать (ведь ты заранее знаеш как "правильно", даже не зная что делается). не быть тебе так программистом... но это совершенно не важно. тут ты прав.
мальчиком больше, мальчиком меньше. ерунда. дело житейское. © Карлсон который живет на крыше.
> работает замечательно. > НО > не работает скролл (( тебя предупреждали ([18]), это и есть "чтото не так"... а вовсе не "работает замечательно".
> что процедура скролла оперирует тупо RowHeight "тупо" оперировать она не может, она делает по логике какую заложил программист это писавший.
> а не считает RowHeightS (( вот еще не хватало "не тупо" проверять то чего не делал (и нет этого), заранее, чтобы комуто потом жизнь облегчить. представляю скорость компонент которые так "не тупо" написанные, и проверяющие все возможное просто на всякий случай. (а здесь переход на второй абзац этого же поста)
-
> Мне в самый раз, не переживай.
Как мы увидели далее, переживать действительно не стОит :)))
-
О боже, только я порадовался что тут вменяемый человек появился... итак, по пунктам:
> ты с таким стилем мышления вместо того чтобы учится программировать, > учишься все обхаивать (ведь ты заранее знаеш как "правильно", > даже не зная что делается). не быть тебе так программистом. > .. но это совершенно не важно. тут ты прав.
мальчик, я уже много лет программирую поэтому и могу решить, что важно а что нет. и я ничего не обхаиваю, не надо придираться к словам.
> тебя предупреждали ([18]), это и есть "чтото не так"... > а вовсе не "работает замечательно".
и что? в целом цель достигнута. мелкие недочёты я сегодня исправлю. в чём проблема-то?
> вот еще не хватало "не тупо" проверять то чего не делал > (и нет этого), заранее, чтобы комуто потом жизнь облегчить. > представляю скорость компонент которые так "не тупо" написанные, > и проверяющие все возможное просто на всякий случай.
про "тупо" - я просто навскидку предположил возможную причину. а насчёт "просто на всякий случай" - рекомендую поизучать VCL в целом, очень интересно, и многое станет понятнее.
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
не работает скролл (( в том плане, что при большом кол-ве записей курсор уезжает вниз, но на экране всё равно остаются первые записи (( Я так понимаю, это из-за того, что процедура скролла оперирует тупо RowHeight, а не считает RowHeightS (( Завтра буду дальше разбираться. Большое спасибо за помощь!
Я лет 10 назад наследовался от TDBGridEh, в которм функциональность TDBGrid "повыше", наследуется все-таки от TCustomGrid, где поведение не отличалось от ожидаемого. Рекомендую посмотреть (или взять за базу) его или TRxDbGrid, чтобы прочувствовать поведение TDBGrid.
Я так понимаю, это из-за того, что процедура скролла оперирует тупо RowHeight, а не считает RowHeightS (( Завтра буду дальше разбираться. Большое спасибо за помощь!
Отладчик поволит увидеть реальные процессы, а не фантазировать. :)
-
От DBGrid замучаешься писать наследника, лучше от TCustomGrid - дольше, зато надежнее. И высоту строк надо вычислять не для "видимых", а для всех, грид сам разберется, что ему показывать.
-
> Я лет 10 назад наследовался от TDBGridEh, в которм функциональность > TDBGrid "повыше", наследуется все-таки от TCustomGrid, где > поведение не отличалось от ожидаемого. Рекомендую посмотреть > (или взять за базу) его или TRxDbGrid, чтобы прочувствовать > поведение TDBGrid.
А я и работаю с TDBGridEh )))
> Отладчик поволит увидеть реальные процессы, а не фантазировать. > :)
Ну конечно ) Это было просто предположение. спать очень хотелось уже )
> От DBGrid замучаешься писать наследника, лучше от TCustomGrid > - дольше, зато надежнее. И высоту строк надо вычислять не > для "видимых", а для всех, грид сам разберется, что ему > показывать.
При наличии времени - несомненно. Но у меня, к сожалению, цейтнот ((
-
> О боже, только я порадовался что тут вменяемый человек появился... если это обо мне, то я каким был таким и остался, а "вменяемость" у меня сильно зависит от собеседника.
> мальчик, я уже много лет программирую ламеризм это еще хуже чем начинающий... второе проходит.
> про "тупо" - я просто навскидку предположил возможную причину. после того как тебе причину попросту открытым текстом сказали...? и которую ты проигнорировал. ладно бы был несогласен, оспорил, привел свои доводы, сказал почему думаешь что это не так и т.д. (в общем вел бы себя адекватно по моим меркам) но проигнорировал... (вот тут моя вменяемость к тебе и кончилась. т.к. очевидно стало с кем общаюсь)
> а насчёт "просто на всякий случай" - рекомендую поизучать VCL в целом, очень интересно, и многое станет понятнее. ну так следуй своим же советам! чего же вместо этого ты спрашиваешь как изменить чтото у тех кто по твоему не знает как это меняемое устроено?
> а не считает RowHeightS (( а вообще что бы ему это дало? ну посчитал бы он по нему 15 видимых, правильно... а куда деть суммы еще трех выделенных (что не исправлено) которые до 18ти? ладно, в позднем проигнорировали значение, специально выведенное для указания отображаемого количества - не рисуем... а другие места где это значение возможно используется? вместо визуальной получишь вообще непонятную какую ошибку, непонятно когда.
> А я и работаю с TDBGridEh ))) а вот это надо указывать изначально, методы "ремонта" жигулей отличаются о ремонта запорожца... везде свои "тонкости". ("многолетний опыт программирования" тебе еще не подсказал эту простую "житейскую мудрость"?) кстати по моим критериям это замалчивание = вранью, умышленному введению отвечающих в заблуждение. (т.е. еще на ступеньку "вменяемости" вниз)
-
> Rax (07.03.08 10:54) [34]
Грид придется практически с нуля писать, чтобы работала эта фича. Кстати, у эхлиба юзер может сам изменять высоту строки. Вполне на это можно зашится и ничего не делать.
ЗЫ. Я видел реализованный грид (самопал в ICL) с фичой автоподгона высоты строки под данные. И видел крутые эффекты, когда в узкую колонку попадает большой текст и тогда строка в экран не лезет. Модуль с этим гридом был сильно не маленький и писали они его (с отладкой) почти год.
Удачи :)
|