Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)  [new]
Polesov
Member

Откуда:
Сообщений: 790
X11
Именно с Calculated Fields я и экспериментировал и получил ошибку, вышеуказанную.

Какова дальнейшая судьба значений, веденных пользователем?

P.S. В FibDataset-е можно определить UpdateSQL, в котором писать в базу только, что нужно. И куда нужно. Только поля должны содержаться в запросе.

Сообщение было отредактировано: 15 ноя 20, 18:08
15 ноя 20, 18:12    [22232416]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14759
Генерируется некая http-ссылка и пользователь по ней переходит, если нажмет вторую кнопку.
Скажем так. Пользователь выбирает имя бота и переходит к нему по нажатию на кнопку, чтобы было чуть понятней.
16 ноя 20, 09:53    [22232625]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)  [new]
Gluck99
Member

Откуда: Оттуда
Сообщений: 1085
X11
Генерируется некая http-ссылка и пользователь по ней переходит, если нажмет вторую кнопку.
Скажем так. Пользователь выбирает имя бота и переходит к нему по нажатию на кнопку, чтобы было чуть понятней.
Так а почему нельзя генерировать эту ссылку в OnCalcFields?
16 ноя 20, 11:47    [22232729]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14759
не проблема, но где, как отображать выбор, имя бота, ссылку и т.д.?

пользователь должен видеть сделанный выбор и возможность нажать кнопку и очень желательно в одной и той же строки сетки
16 ноя 20, 11:59    [22232739]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)  [new]
Polesov
Member

Откуда:
Сообщений: 790
X11
Генерируется некая http-ссылка и пользователь по ней переходит, если нажмет вторую кнопку.
Скажем так. Пользователь выбирает имя бота и переходит к нему по нажатию на кнопку, чтобы было чуть понятней.


В SQL-запрос добавляем фиктивное поле, например:

       cast( null as varchar( 32 ) ) as BOT_NAME


На добавленное поле назначаем строку в DbVerticalGrid c EditProperties ComboBox, список которого заполняем, например, в OnCreate формы.
Всем строкам, которые нельзя менять, присваиваем Properties.EditProperties.ReadOnly := True;


В UpdateSQL DataSet-а пишем холостой запрос, что бы можно было вводить значения:
select 1
  from RDB$DATABASE


Ниже исходные тексты (D-XE7, ежли чо):
создание таблицы
+

create table B (
    ID   integer not null,
    VAL  varchar( 10 )
);

alter table B
  add constraint PK_B primary key ( ID );

insert into B ( ID, VAL )
       values (  1, 'VALUE #1' );
commit;



текст dpr
+
program Project8;

uses
  Vcl.Forms,
  Unit14 in 'Unit14.pas' {Form14};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm14, Form14);
  Application.Run;
end.


текст pas
+


unit Unit14;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles, cxEdit, dxSkinsCore,
  dxSkinOffice2010Blue, Data.DB, FIBDataSet, pFIBDataSet, FIBDatabase, pFIBDatabase, cxVGrid, cxDBVGrid, cxInplaceContainer, Vcl.StdCtrls, cxLabel,
  cxDropDownEdit, cxTextEdit;

type
  TForm14 = class(TForm)
    cxDBVerticalGrid1: TcxDBVerticalGrid;
    cxDBVerticalGrid1DBEditorRow1: TcxDBEditorRow;
    cxDBVerticalGrid1DBEditorRow2: TcxDBEditorRow;
    rowBotName: TcxDBEditorRow;
    db: TpFIBDatabase;
    tr: TpFIBTransaction;
    ds: TpFIBDataSet;
    sr: TDataSource;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form14: TForm14;

implementation

{$R *.dfm}

procedure TForm14.Button1Click(Sender: TObject);
begin
  Caption := ds.fieldByName( 'BOT_NAME' ).AsString;
end;

procedure TForm14.FormCreate(Sender: TObject);
begin
  with TcxComboBoxProperties( rowBotName.Properties.EditProperties ).Items do
  begin
    Add( 'BOT NAME #1' );
    Add( 'BOT NAME #2' );
    Add( 'BOT NAME #3' );
  end;
end;

end.



текст dfm
+


object Form14: TForm14
  Left = 0
  Top = 0
  Caption = 'Form14'
  ClientHeight = 299
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object cxDBVerticalGrid1: TcxDBVerticalGrid
    Left = 32
    Top = 24
    Width = 417
    Height = 121
    OptionsView.RowHeaderWidth = 154
    Navigator.Buttons.CustomButtons = <>
    TabOrder = 0
    DataController.DataSource = sr
    Version = 1
    object cxDBVerticalGrid1DBEditorRow1: TcxDBEditorRow
      Properties.EditPropertiesClassName = 'TcxTextEditProperties'
      Properties.EditProperties.ReadOnly = True
      Properties.DataBinding.FieldName = 'ID'
      Properties.Options.Editing = False
      ID = 0
      ParentID = -1
      Index = 0
      Version = 1
    end
    object cxDBVerticalGrid1DBEditorRow2: TcxDBEditorRow
      Properties.EditPropertiesClassName = 'TcxTextEditProperties'
      Properties.EditProperties.ReadOnly = True
      Properties.DataBinding.FieldName = 'VAL'
      ID = 1
      ParentID = -1
      Index = 1
      Version = 1
    end
    object rowBotName: TcxDBEditorRow
      Properties.EditPropertiesClassName = 'TcxComboBoxProperties'
      Properties.DataBinding.FieldName = 'BOT_NAME'
      ID = 2
      ParentID = -1
      Index = 2
      Version = 1
    end
  end
  object Button1: TButton
    Left = 480
    Top = 24
    Width = 137
    Height = 25
    Caption = 'Get Bot Name'
    TabOrder = 1
    OnClick = Button1Click
  end
  object db: TpFIBDatabase
    Connected = True
    DBName = 'test'
    DBParams.Strings = (
      'user_name=SYSDBA'
      'password=masterkey'
      'lc_ctype=WIN1251')
    DefaultTransaction = tr
    DefaultUpdateTransaction = tr
    SQLDialect = 3
    Timeout = 0
    LibraryName = 'fbclient.dll'
    WaitForRestoreConnect = 0
    Left = 32
    Top = 168
  end
  object tr: TpFIBTransaction
    Active = True
    DefaultDatabase = db
    Left = 32
    Top = 224
  end
  object ds: TpFIBDataSet
    UpdateSQL.Strings = (
      'select 1'
      '  from RDB$DATABASE')
    SelectSQL.Strings = (
      'select ID,'
      '       VAL,'
      '       cast( null as varchar( 32 ) ) as BOT_NAME'
      '  from B')
    Active = True
    Transaction = tr
    Database = db
    Left = 80
    Top = 168
  end
  object sr: TDataSource
    DataSet = ds
    Left = 128
    Top = 168
  end
end

16 ноя 20, 12:14    [22232765]     Ответить | Цитировать Сообщить модератору
 Re: Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14759
Polesov
В UpdateSQL DataSet-а пишем холостой запрос


спасибо, та сработало
16 ноя 20, 12:25    [22232774]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить