Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Вниз

InputQuery   Найти похожие ветки 

 
SysError ©   (2006-11-13 21:55) [0]

Скажите пожалуйста, есит ли в KOL функция сходная со значением InputQuery в VCL? Заранее спасибо!


 
_gandalf_   (2006-11-14 11:37) [1]

Что нить в таком духе можно попробовать
unit InputBox2;

interface

uses
 KOL,Windows,Messages;

function inputbox(caption:string;findtext:string; password:boolean):string;

implementation

type
 TInputBoxForm=object(TObj)
   Form:PControl;
   Edit:PControl;
   Button:PControl;
   Text:String;
 end;

var
 ResultText:String;

{$DEFINE TEST_SHOWMODAL}

function inputbox(caption:string;findtext:string; password:boolean):string;
var forma,
   edit,
   button:PControl;
   text:string;

procedure click(Forma : PControl; Sender : PObj );
begin
 ResultText:=forma.Children[0].Text;
 forma.ModalResult:=1;
end;

procedure close(Forma : PControl; Sender : PObj );
begin
 ResultText:="";
 forma.ModalResult:=1;
end;

begin
 forma:=NewForm(applet, caption );
 forma.Style:= WS_BORDER or WS_SYSMENU or WS_VISIBLE;;
if password then
   edit:=neweditbox(forma,[eoPassword]).Size(180,22)
else
   edit:=neweditbox(forma,[]).Size(180,22);  edit.Left:=20;edit.Top:=20;edit.Color:=clwhite;
 edit.Text:=findtext;
 button:=newbutton(forma,"Ok").Size(55,22);
 button.Left:=215;
 button.Top:=20;
 button.OnClick:=TOnEvent(Makemethod(forma,@click));
 forma.Height:=110;
 forma.Width:=280;
 forma.CenterOnParent;
 forma.OnClose:=TOnEventAccept(Makemethod(forma,@close));
 forma.ShowModal;
 result:=ResultText;
 forma.Close;
end;

end.


 
MTsv DN ©   (2006-11-14 12:20) [2]

> procedure click(Dummy : Pointer; Forma : PControl; Sender : PObj );
> procedure close(Dummy : Pointer; Forma : PControl; Sender : PObj );

Добавить выделенное жирным шрифтом....


 
_gandalf_   (2006-11-14 13:08) [3]

или в кол чтото координально поменялось, или я облажался - Forma : PControl; это и есть тот Dummy


 
MTsv DN ©   (2006-11-14 14:01) [4]

> или в кол чтото координально поменялось, или я облажался - Forma : PControl; это и есть тот Dummy
Сорри, Гэндальф... Это я не подумавши ляпнул...


 
SysError ©   (2006-11-14 18:58) [5]

Еще раз спасибо! Не плохо было бы добавить такую функцию в KOL.pas


 
thaddy   (2006-11-14 20:29) [6]

I posted this about three years ago.
Note this actually makes your program larger than using pure KOL, but it is a true API style input query:

program kolinputquery;

uses
Windows,
Messages,
Kol;
{$R *.res}
Function ApiInputBox( Const Caption, Prompt, Default: String ): String;forward;
Function ApiInputQuery( Const Caption, Prompt: String; Var value: String ):Boolean;forward;
const
 INPUT_DIALOG =   1;
 IDC_EDIT     =   102;
 IDC_LABEL    =   101;
resourcestring
 DefaultAPIQueryCaption = "Enter data";
 DefaultAPIQueryPrompt  = "Value:";

Type
 TInputBoxData = Record
   aCaption, aPrompt, aValue: String;
 End;
 PInputBoxData = ^TInputBoxData;

Function ApiInputBox( Const Caption, Prompt, Default: String ): String;
 Var
   value: String;
 Begin
   value:= Default;
   If APIInputQuery( Caption,Prompt, Value ) Then
     Result := value
   Else
     Result := Default;
 End; { ApiInputBox }

Function DlgProc( hwndDlg: HWND; Msg: UINT; wparam: WPARAM; lparam: LPARAM ):
BOOL; stdcall;
 Procedure InitDialog;
   Var
     pdata: PInputBoxData;
   Begin
     Assert( lparam <> 0 );
     pdata := Pointer( lparam );
     SetWindowLong( hwndDlg, GWL_USERDATA, lparam );
     SetWindowText( hwndDlg, PChar( pdata^.aCaption ));
     SetDlgItemText( hwndDlg, IDC_LABEL, Pchar( pdata^.aPrompt ));
     If Length( pdata^.aValue ) > 0 Then
       SetDlgItemText( hwndDlg, IDC_EDIT, Pchar( pdata^.aValue ));
     SetFocus( GetDlgItem( hwndDlg, IDC_EDIT ));
   End; { InitDialog }

 Function HandleCommand: Boolean;
   Var
     pdata: PInputBoxData;
   Begin
     Result := False;
     If  HiWord( wparam ) = BN_CLICKED Then Begin
       Result := true;
       If LoWord( wparam ) = IDOK Then Begin
         pData := Pointer( GetWindowLong( hwndDlg, GWL_USERDATA ));
         SetLength( pData.aValue,
                    SendDlgItemMessage(
                      hwndDlg, IDC_EDIT,
                      WM_GETTEXTLENGTH, 0, 0 ));
         GetDlgItemText( hwndDlg, IDC_EDIT, Pchar(pData.aValue),
                         Length( pData.aValue )+1 );
       End;
       EndDialog( hwndDlg, LoWord( wparam ));
     End;
   End; { HandleCommand }

 Begin
   Result := False;
   Case Msg Of
     WM_INITDIALOG: InitDialog;
     WM_COMMAND   : Result :=  HandleCommand;
   End; { Case }
 End; { DlgProc }

Function ApiInputQuery( Const Caption, Prompt: String; Var value: String ):Boolean;
 Var
   data: TInputBoxData;
   res: Integer;
 Begin
   If Length( Caption ) > 0 Then
     data.aCaption:= Caption
   Else
     data.aCaption := DefaultAPIQueryCaption;

   If Length( Prompt ) > 0 Then
     data.aPrompt := Prompt
   Else
     data.aPrompt := DefaultAPIQueryPrompt;

   data.aValue  := value;
   res := DialogBoxParam( hInstance, MakeIntResource( INPUT_DIALOG ),
                          GetActiveWindow, @DlgProc, LPARAM(@data ));
   Result := res = IDOK;
   Assert( res <> -1, "ApiInputQuery: DialogBoxParam failed" );
 End; { ApiInputQuery }

 var a:string;
begin
 a:="Thaddy";
Applet:=NewForm(nil,"");
Applet.Caption:= ApiInputBox("","",A);//then Applet.Caption:=A;
Run(Applet)
end.

Copy the following to a file apidlg.rc and compile it with brcc32:

/****************************************************************************
apidlg.rc
produced by Borland Resource Workshop
*****************************************************************************/

#define INPUT_DIALOG   1
#define IDC_EDIT   102
#define IDC_LABEL  101

INPUT_DIALOG DIALOG 6, 15, 207, 45
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "INPUTDIALOG"
FONT 8, "MS Sans Serif"
{
DEFPUSHBUTTON "OK", IDOK, 148, 6, 50, 14
PUSHBUTTON "Cancel", IDCANCEL, 148, 24, 50, 14
LTEXT "Label 1", IDC_LABEL, 4, 12, 138, 8
EDITTEXT IDC_EDIT, 4, 25, 138, 12, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
}




Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.038 c
2-1181009357
Riply
2007-06-05 06:09
2007.06.24
ReopenFile под XP


15-1180508378
pasha_golub
2007-05-30 10:59
2007.06.24
В Англии удалено упоминание холокоста...


9-1154586671
vladimirg88
2006-08-03 10:31
2007.06.24
картинка внлубь монитора


2-1180793081
Anna_Roza
2007-06-02 18:04
2007.06.24
TTable путешествия по строкам


15-1180004673
Gorlum
2007-05-24 15:04
2007.06.24
Excel сплющивает картинки... Понять не могу почему...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский