Вопрос по работе с ExtPascal

Модератор: Модераторы

Ответить
Аватара пользователя
bloodlines
постоялец
Сообщения: 100
Зарегистрирован: 05.11.2008 10:26:19

Вопрос по работе с ExtPascal

Сообщение bloodlines »

Собственно на

Код: Выделить всё

TExtWindow
есть

Код: Выделить всё

LoginEd: TExtFormTextField
. При нажатии на кнопку хочу считать значение LoginEd в переменную

Код: Выделить всё

 LName : String; 

Делаю так

Код: Выделить всё

LName := LoginEd.JSString(LoginEd.GetValue);


В результате в LName заноситься '-$72C7'. И так всегда, что бы я там не писал.
А вот это

Код: Выделить всё

LName := LoginEd.Value;

возвращает только значение, поставленное в Design.

Пожалуйста подскажите как получить строковое значение из TExtFormTextField? Что я не так делаю?
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Забавно ^_^ Уже задавался этим вопросом. Единственный вариант, как я понял - передавать нужное значение через Ajax.
Например:

Код: Выделить всё

  ...
  ExtButton1.On('click', Ajax(ExtButton1Click, ['value', LoginEd.GetValue]));
  ...
Аватара пользователя
bloodlines
постоялец
Сообщения: 100
Зарегистрирован: 05.11.2008 10:26:19

Сообщение bloodlines »

Форум на code.google.com я читал. Но никак до конца не могу разобраться! Если не сложно то пожалуйста помогите мне с кодом

Код: Выделить всё

{$DEFINE UseRuntime}

unit LoginUn;
{$mode delphi}
{$H+}

interface

uses
  SysUtils, Classes, FileUtil,
{$IFDEF UseRuntime}
  Ext, ExtPascal, ExtPascalUtils, ExtForm,
  ExtData, ExtGrid, ExtUtil, ExtAir, ExtDd,
  ExtLayout, ExtMenu, ExtDirect, ExtState, ExtTree,
  ExtUxForm;

{
   Ext, ExtPascal, ExtPascalUtils, ExtForm,
  ExtData, ExtGrid, ExtUtil, ExtAir, ExtDd,
  ExtLayout, ExtMenu, ExtDirect, ExtState, ExtTree,
  ExtUxForm;
}

type
  {$M+}
  TExtPanel_Tab = TExtPanel;
  TExtFormTextField_Grid = TExtFormTextField;
  TExtFormNumberField_Grid = TExtFormNumberField;
  TExtFormDateField_Grid = TExtFormDateField;
  TExtFormTimeField_Grid = TExtFormTimeField;
  TExtFormCheckbox_Grid = TExtFormCheckbox;
  TExtFormComboBox_Grid = TExtFormComboBox;
  {$M-}

{$ELSE}
  ExtP_Design_Ctrls;
{$ENDIF}

{$M+}
type

  { TLoginWin }
  TLoginWin = class(TExtWindow)
    ConnectBtn: TExtButton;
    ExtFormLabel1: TExtFormLabel;
    ExtFormLabel2: TExtFormLabel;
    ExtFormLabel3: TExtFormLabel;
    SQLLog: TExtFormTextArea;
    LoginEd: TExtFormTextField;
    PassEd: TExtFormTextField;
    DBConn: TZConnection;
    ServiceQ: TZQuery;
  private
  public
    LoggedIn : boolean;
    constructor Create;
    procedure Show;
  published
   procedure ConnectBtnClick;
  end;
  {$M-}

implementation

uses
  AppThread, LConvEncoding;

procedure TLoginWin.ConnectBtnClick;
 var
   LName, LPass : String;
begin

  LName := LoginEd.JSString(LoginEd.GetValue);
  LPass := PassEd.JSString(PassEd.GetValue);
 // LName := LoginEd.Value;

end;

constructor TLoginWin.Create;
begin
  inherited;
{$IFDEF UseRuntime}
 {$I LoginUn.inc}
{$ENDIF}

 Closable := false;

 PassEd.InputType  := itPassword;

 ConnectBtn.On('click', Ajax(ConnectBtnClick,['value', LoginEd.GetValue]));

end;

procedure TLoginWin.Show;
begin
  inherited Show;
end;

end. 


Как в переменную LName занести значение LoginEd ?
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Вот так, например:

Код: Выделить всё

...
procedure TLoginWin.ConnectBtnClick;
var
   LName, LPass : String;
begin

  LName := CurrentThread.Query['value'];
  LPass := CurrentThread.Query['pass'];
// LName := LoginEd.Value;

end;

...

constructor TLoginWin.Create;
begin
  inherited;
{$IFDEF UseRuntime}
{$I LoginUn.inc}
{$ENDIF}

Closable := false;

PassEd.InputType  := itPassword;

ConnectBtn.On('click', Ajax(ConnectBtnClick,['value', LoginEd.GetValue, 'pass', PassEd.GetValue]));

end;

...
Аватара пользователя
bloodlines
постоялец
Сообщения: 100
Зарегистрирован: 05.11.2008 10:26:19

Сообщение bloodlines »

Большое спасибо! Отличная штука этот ExtPascal! Только вот Ajax на мой взгляд немного доморошенная поделка. Кстати, думаю Вам стоит включить данный вопрос в свой мануал.
P.S. В Вашем мануале очень понравилась идея со встроенным в exe Indy WEB сервером.
Ответить