2011-12-21 4 views
2

Есть ли какой-либо реальный эквивалент DataGridView C# в Delphi?Дельфийский эквивалент CG DataGridView

Я попытался

  • TStringGrid

    • Но полоса прокрутки или невидим, когда все элементы являются видимыми, или она является самой маленькой полосой прокрутки можно независимо от того, как мало пунктов переполнены и обновляется только при отпускании полосы прокрутки, а не при ее перетаскивании
    • Кроме того, если у вас есть одна фиксированная строка, вы должны иметь хотя бы одну (пустую) строку, кроме того, что неудобно и неудобно ghtly
  • TDBGrid

    • Но я не могу показаться, чтобы выяснить, как добавлять элементы программно (и я не думаю, что это означало, чтобы сделать это в любом случае). Если бы я мог это сделать, TDBGrid было бы хорошо для меня.

Так что это Delphi эквивалент C# 's DataGridView, что не имеет проблем, перечисленных выше?

+0

Просто связать TDBGrid с TTable или другого TDataSet. –

+0

@HenkHolterman Я попробую это сейчас и посмотрю, смогу ли я заставить его работать –

+0

, если вы не можете заставить его работать .. вставьте свой код .. Я делаю Delphi в течение 17 лет, поэтому я знаю как Delphi, так и C# hope @Henk комментарии помогли ему правильно сказать, также надеюсь, что у вас есть действующий компонент источника данных, а возможно, у вас есть все нужные компоненты, но они не правильно подключают их. Я бы держался подальше от TStringGrid, слишком много ручного кодирования, если вы хотите делать какие-либо пользовательские стиль вещи ..также посмотрите, что TClientDataSet тоже творит чудеса – MethodMan

ответ

3

DataGridView - очень гибкий элемент управления, который может работать в связанных и несвязанных режимах, на стороне Delphi вы должны выбрать один из двух видов элементов управления, например, если содержимое элемента управления можно редактировать напрямую (unbound), вы можете выберите компонент, такой как TStringGrid или в связанном режиме, который в delphi называется данными, вы должны выбрать что-то вроде dbgrid, в этом последнем случае вы отредактируете набор данных, связанный с элементом управления, и элемент управления отражает содержимое набора данных. Использование этого последнего сценария. у вас есть несколько опций о компоненте набора данных, чтобы выбрать, возможно, наиболее гибким является TClientDataSet. если вы хотите узнать больше об этой теме проверки эти ссылки

Примечание: в последней версии Delphi (XE2) а была введена новая концепция под названием LiveBindings, в которой представлены большие изменения в привязать объект или компонент к коллекции или другому компоненту.

+0

Простите, что у меня все еще есть проблемы, но я не могу установить для свойства 'Active' моего' TClientDataSet' значение 'true', потому что он говорит« Отсутствует поставщик данных или пакет данных ». Есть ли примеры этого, на которые я могу смотреть? –

+0

TClientDataset либо служит автономным набором данных в памяти, либо как мост между источником данных и другим набором данных, который может быть локальным или удаленным. Если вы открываете ClientDataset, он должен быть подключен к провайдеру, который должен быть подключен к набору данных, например TADOQuery. Вы также можете сами определить поля и вызвать CreateDataset, чтобы сделать функцию clientdataset автономной базой данных. TClientDataset очень гибкий, но вам необязательно это нужно, когда вы хотите показать результаты запроса в сетке. Просто достаточно запроса (= набор данных), источника данных и сетки. – GolezTrol

+0

@GolezTrol Я не хочу, чтобы он показывал результаты запроса, я просто хочу показать некоторые строки в табличном макете. Я все еще не могу понять, как вставить новую строку ... Мне очень жаль, это просто ускользает от меня. –

0

Я рекомендую вам проверить DevExpress.com QuantumGrid - она ​​работает как в Bound и Unvound режиме