データベースがロードされたときに、dbgridコントロールの特定のセルの内容を変更します。たとえば、「禁止」に等しい場合、データベースのフィールドをdbgridに表示しないようにすることができます。私はそれを行うことができる方法はありますか?表示される前にDBGridセルの内容を変更します。
答えて
あなたはDataSetNotifyEvent Afteropen
DBGrid.Datasource.Dataset.Afteropen使用することができます=
を、あなたが持つフィールドを非表示にすることができます:
場合、条件、その後 DBGrid.columns [X] .visible:= false
代わりに、特定のセルの一部のコンテンツを上書き/削除するためにOnDrawColumnCellイベントの条件を確認することができます
DataSetイベントを使用してUIを同期させるのは良い方法ではありません。 UIロジックをビジネスロジックから分離するために、DataSourceイベントに頼ることができます。
DataSetの状態がdsInactiveからdsBrowseに変更されると、DataSource OnStateの変更に依存して、データがデータベースからロードされたときにUI関連のものを作成できます。
以前の状態を追跡してコードが必要以上に実行されないようにするには、[補助フィールド]を使用します。例えば
(未テストコード)
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
if (DataSource1.State = dsBrowse) and (not FUIStateInSync) then
begin
//dataset is open, change UI accordingly
DBGrid1.Columns[0].Visible := SomeCondition();
//this will prevent the code to be executed again
//as state comes to dsBrowse after posting changes, etc.
FUIStateInSync := True;
end
else if (DataSource1.State = dsInactive) then
FUIStateInSync := False; //to let it happen again when opened.
end;
あなたが受け入れ答えを持っている場合でも、O.Dので、私は、これを公開提案はあなたが避けるべきものです。
は、プレゼンテーションのためにデータベースに保存されているものと異なる値を提供するために、フィールドのOnGetText
イベントを使用してください:あなたの元の質問に行く
私はO.D.を受け入れたそれが働いたので、それは私をたくさん助けました。すべての答えに+1してください。ご協力いただきありがとうございます。 –
。
DisplayText
ブール値のパラメータは、値をユーザに提示する必要がある場合はTrueになり、値が他の目的に必要な場合はFalseになります。
procedure TForm1.SQLQuery1Field1GetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
if (Sender.AsString = 'forbidden') and (DisplayText)
and (PrivilegeLevel(CurrentUser) < 10) then
Text := '********'
else
Text := Sender.AsString;
end;
データセットのHookup OnAfterOpenイベント。 隠しフィールドを取得し、VisibleプロパティをFalseに設定し、DBGridのは彼らに
乾杯
を表示しません行(タプル)を含まないように、私は、グリッドにデータを提供するクエリを変更ことになります'禁じられた'文字列を持つ。これは、すでにデータベースから検索された後にデータを表示しないように努力するよりもずっと簡単です。
私は最善の方法は、DATABASE_TABLE
FROM SOME_VALUE =「禁止」- 1. XAMPP:PHPファイルの変更内容がブラウザに表示される内容は変更されません
- 2. DBGrid内のデータを検索し、そのDBGridが表示する内容を一時的に変更する検索を追加する - Delphi
- 3. 変更セルの内容は、クリックに表示 - javascriptの
- 4. セルの内容に基づいてExcelが変更される
- 5. 更新されたログファイルの内容を表示します
- 6. メモにDBGrid行が表示される
- 7. 更新されたファイルの内容を表示するには?
- 8. UITableViewセルの内容がすばやく表示されない
- 9. スクロールテーブルの表示内容が変更された場合
- 10. Grails 3はf:table内のセル表示スタイルを変更します
- 11. セルの内容を別のセルから変更する
- 12. ラベルClearCaseの内容特定の日付に表示される内容(設定仕様を変更せずに)
- 13. swift 3コンテナの表示内容の表示内容の更新
- 14. 行選択のDataGridセルの内容/テンプレートを変更します
- 15. AVCaptureVideoPreviewLayerに表示される内容を保存します
- 16. 別のシートで強調表示されたセルの内容を一覧表示します
- 17. テーブルをループしてセルの内容を変更する
- 18. DevExpress XtraGridはセル全体の内容を表示しません
- 19. GmailのHTML電子メール - テーブルの内容がセルの外に表示される
- 20. ui-gridで表示内容を変更するには?
- 21. UICollectionView特定のセルのセル内容を更新します。
- 22. ユーザーがセルの内容を変更した場合、セルの色を変更します。
- 23. 変更内容のみを表示するgitログ
- 24. このJListにバインドすると、ユーザーに表示される内容を変更できます。
- 25. テキストテキストのプロパティに変数の内容が表示されない
- 26. httpリクエストに変数の内容が表示されない - jmeter
- 27. PyQt4:QStandardItemに変数の内容が表示されない
- 28. neo4jのノードに表示される内容を変更するにはどうすればよいですか?
- 29. テーブルビューのセルが表示される前にプレースホルダを表示する方法は?
- 30. ユーザーに表示される前にWebブラウザーでHTMLを変更しますか?
おかげでたくさんのフィールドを選択しないだろうと思います。それは働いた:) –