Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.035 c
1-1082029201
avgur
2004-04-15 15:40
2004.05.02
Вопрос по кратности значений


7-1079070121
Ozone
2004-03-12 08:42
2004.05.02
WebCam


1-1081879073
ZyXEL
2004-04-13 21:57
2004.05.02
Как избавиться от скроллинга у WebBrowser?


7-1079255336
threeve
2004-03-14 12:08
2004.05.02
Shut down


1-1082099950
ZDDR
2004-04-16 11:19
2004.05.02
Процессы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский