Форум: "KOL";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизComboBox... устал с ним бороться... помогите, plz Найти похожие ветки
← →
Revolter (2003-09-24 19:13) [0]1) нет курсора
создаю так:
e2:=newComboBox(Form1.Form,[coUpperCase,coSort]);
активирую так:
e2.DoSetFocus
в итоге комбобокс без мигающего курсора.. :(
2) требуется выделить часть текста (как в Internet Explorer"e), а свойства SelStart и SelLength у комбобокса служат для другого :(
поможите люди добрые..
еще вопрос: нет диалогов в KOL, аналогичных InputQuery из Dialogs, а то, при включении модуля последнего, экзэшник возрастает примерно на 300 Кб
:( ..?
← →
savva © (2003-09-25 20:13) [1]1) не знаю - а попробовать не могу, в инете не с моего компа..
2) если до завтра подождешь - то будет тебе InputBox.
← →
Revolter (2003-09-25 23:57) [2]подожду ]:-]
← →
Revolter (2003-09-26 00:02) [3]очень нужен ответ на первый вопрос.. помогите люди добрые..
← →
Revolter (2003-09-26 00:04) [4]и на второй тоже..
← →
savva © (2003-09-26 09:37) [5]я поступил просто с диалогом ввода - выдрал его из модуля, слегка подогнал - и вот, кушайте - не обляпайтесь:)
{ Input dialog }
function GetAveCharSize(Canvas: PCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord("A"));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord("a"));
Result:=TPoint(Canvas.TextExtent(Buffer));
Result.X := Result.X div 52;
end;
type
PInputQuery = ^TInputQuery;
TInputQuery = object (TControl)
procedure ButtonClick( Sender: PObj );
end;
function NewInputQuery(parent : PControl;Caption:string):PInputQuery;
begin
result := PInputQuery(NewForm(parent,Caption));
end;
procedure TInputQuery.ButtonClick;
begin
//
ModalResult:=sender.Tag;
end;
function InputQuery(const ACaption, APrompt: string;
var Value: string): Boolean;
var
Form_ :PInputQuery;
Prompt,Edit: PControl;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := False;
Form_ := NewInputQuery(applet,ACaption);
with Form_^ do
try
ModalResult:=idCancel;
Form_.Font.FontPitch := fpVariable;
Form_.Font.FontHeight := 10;
Canvas.Font.FontPitch := fpVariable;
Canvas.Font.FontHeight := 10;
//DialogUnits := GetAveCharSize(Form_.Canvas);
DialogUnits.x:= 6;
DialogUnits.y:= 13;
Form_.ExStyle := Form_.ExStyle or WS_EX_DLGMODALFRAME or WS_EX_WINDOWEDGE;
Form_.Style := Form_.Style and not (WS_MINIMIZEBOX or WS_MAXIMIZEBOX);
Form_.ClientWidth := MulDiv(180, DialogUnits.X, 4);
Form_.ClientHeight := MulDiv(63, DialogUnits.Y, 8);
DeleteMenu( GetSystemMenu( Form_.GetWindowHandle, False ), SC_CLOSE, MF_BYCOMMAND );
Form_.CenterOnParent;
Prompt := NewWordWrapLabel(Form_,APrompt);
with Prompt^ do
begin
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Caption := APrompt;
VerticalAlign:=vaBottom;
AutoSize(True);
end;
Edit := NewEditbox( Form_,[]);
Edit.Ctl3D := False;
Edit.Color := clInfoBk;
Edit.DoubleBuffered := True;
Edit.TextAlign := taCenter;
with Edit^ do
begin
Left := Prompt.Left;
Top := MulDiv(19, DialogUnits.Y, 8);
Width := MulDiv(164, DialogUnits.X, 4);
// MaxLength := 255;
Text := Value;
SelectAll;
end;
ButtonTop := MulDiv(41, DialogUnits.Y, 8);
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with NewButton(Form_,"OK")^ do
begin
tag := idOK ;
DefaultBtn:=true;
SetPosition(MulDiv(38, DialogUnits.X, 4), ButtonTop);
Width:= ButtonWidth;
Height:= ButtonHeight;
OnClick:=ButtonClick;
end;
with NewButton(Form_,"Cancel")^ do
begin
tag := idCancel;
CancelBtn:=true;
SetPosition(MulDiv(92, DialogUnits.X, 4), ButtonTop);
Width:= ButtonWidth;
Height:= ButtonHeight;
OnClick:=ButtonClick;
end;
if ShowModal = idOk then
begin
Value := Edit.Text;
Result := True;
end;
finally
if assigned(form_) then
Form_.Close;
Free_And_Nil(Form_);
end;
end;
function InputBox(const ACaption, APrompt, ADefault: string): string;
begin
Result := ADefault;
InputQuery(ACaption, APrompt, Result);
end;
← →
Revolter (2003-09-26 11:40) [6]спасибо! попробую.. а что на счет ComboBox"а?
← →
savva © (2003-09-26 11:58) [7]вот этот код у меня работает.. и курсор мигает...
e2 := NewComboBox( Form, [ coSort, coUpperCase ] );
e2.SetPosition( 136, 16 );
e2.Color := clWindow;
e2.Items[ 0 ] := "ComboBox1";
e2.CurIndex := 0;
e2.CreateWindow;
e2.DoSetFocus;
← →
Revolter (2003-09-26 12:57) [8]а как выделить часть текста в комбобоксе? т.е. есть аналоги SelStart и SelLength для ComboBox"а, как в EditBox"е?
← →
savva © (2003-09-26 15:17) [9]e2.Perform(CB_SETEDITSEL,0,MAKELPARAM(1,6));
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceui40/html/ceconcomboboxfunctions.asp
← →
Revolter (2003-09-26 15:38) [10]большое спасибо!!!
будете у нас на Колыме.. ]:-]
← →
savva © (2003-09-26 16:34) [11]> Revolter (26.09.03 15:38) [10]
уж лучше вы к нам:))
← →
Revolter (2003-09-26 18:04) [12]:)
хм.. диалог не работает.. - белое окно, без кнопок и едитбокс желтый без бордера.. :(
а с комбобоксом разобрался - за ним был ImageShow и из-за этого не было курсора.. это глюк KOL?
← →
Gandalf © (2003-09-26 18:36) [13]У меня есть готовый и рабочий InputBox - это не переделка оригинало, а свой вариант - может подойдет?
Тут две версии по компиляции (Модаль не модаль) - и две версии по реализации, не помню точно какая пахала - как побробуете, мне скажите:// 27-apr-2003
// Zharov Dmitry and Leden Dmitry (c)
unit InputBox1;
{$DEFINE TEST_SHOWMODAL}
interface
uses
KOL,Windows;
function inputbox(caption:string;findtext:string):string;
implementation
type
PInputBoxForm=^TInputBoxForm;
TInputBoxForm=object(TObj)
Form:PControl;
Edit:PControl;
Button:PControl;
Text:String;
procedure OnClick(Sender : PObj );
end;
procedure TInputBoxForm.OnClick(Sender : PObj );
begin
Text:=Button.Text;
{$IFDEF TEST_SHOWMODAL}
Form.ModalResult:=1;
{$ELSE}
Form.Close;
// И куда текст пойдет?
Free; // Вообще по мне - экстримально.
{$ENDIF}
end;
function InputBox(caption:string; findtext:string):string;
var
InputBoxForm:PInputBoxForm;
tmp:String;
begin
New(InputBoxForm,Create);
with InputBoxForm^ do
begin
form:=NewForm(applet, caption );
form.Style:= WS_BORDER or WS_SYSMENU or WS_VISIBLE;;
edit:=neweditbox(form,[]).Size(180,22);
edit.Left:=20;edit.Top:=20;edit.Color:=clwhite;
edit.Text:=findtext;
button:=newbutton(form,"Ok").Size(55,22);
button.Left:=215;
button.Top:=20;
button.OnClick:=OnClick;
form.Height:=110;
form.Width:=280;
form.CenterOnParent;
{$IFDEF TEST_SHOWMODAL}
form.ShowModal;
Result:=Text;
Free;
{$ELSE}
form.Show;
Result:="";
{$ENDIF}
end;
end;
end.
и два
// 27-apr-2003
// Zharov Dmitry and Leden Dmitry (c)
unit InputBox1;
interface
uses
KOL,Windows;
function inputbox(caption:string;findtext:string):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):string;
var forma,
edit,
button:PControl;
text:string;
procedure close(Forma : PControl; Sender : PObj );
begin
ResultText:=forma.Children[0].Text;
{$IFDEF TEST_SHOWMODAL}
forma.ModalResult:=1;
{$ELSE}
forma.Close;
{$ENDIF}
end;
begin
forma:=NewForm(applet, caption );
forma.Style:= WS_BORDER or WS_SYSMENU or WS_VISIBLE;;
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,@close));
forma.Height:=110;
forma.Width:=280;
forma.CenterOnParent;
{$IFDEF TEST_SHOWMODAL}
forma.ShowModal;
{$ELSE}
forma.Show;
{$ENDIF}
result:=ResultText;
end;
end.
← →
Revolter (2003-09-26 19:07) [14]хм.. у меня корректно не работает не один - может дело в проекте? выводится прозрачная форма, без компонент, а вместо едитбокса просто мигающий курсор.. что не так?
← →
Gandalf © (2003-09-26 23:37) [15]Я сам попробовал - работает, что то у тебя не так :(
← →
Revolter (2003-10-11 18:48) [16]разобрался в чем была проблема:
menub:=newLabel(Form1.Form,"Меню");
menub.Transparent:=true;
после этого форма диалога становится прозрачной и у Form1 глюки начинаются... (один из них - есть есть комбобокс, за ним имэджшоу => у комбобокса нет курсора).. только не знаю чего это глюк KOL или не KOL
подскажите, как поставить у menub корректную прозрачность?
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.036 c