dicas show delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais
sombra
Artigos Show Delphi

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais
sombra
iniciantes show delphi

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais
sombra
downloads show delphi

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
sombra
voltar

PARA QUEM GOSTA DE DELPHI

Como usar um InputBox com um ComboBox?

Esta dica mostra como criar uma janela para ter o efeito de InputBox
utilizando um ComboBox.

Os uses são as units normais de um Form com botões e Combos.

Função:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
function InputCombo(const ACaption, APrompt: string; const AList: TStrings): string;
 
function GetCharSize(Canvas: TCanvas): 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'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;  
 
var
Form: TForm;
Prompt: TLabel;
Combo: TComboBox;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := '';
Form   := TForm.Create(Application);
with Form do
try
Canvas.Font := Font;
DialogUnits := GetCharSize(Canvas);
BorderStyle := bsDialog;
Caption     := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Position    := poScreenCenter;
Prompt      := TLabel.Create(Form);
with Prompt do
begin
Parent   := Form;
Caption  := APrompt;
Left     := MulDiv(8, DialogUnits.X, 4);
Top      := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
WordWrap := True;
end;
Combo := TComboBox.Create(Form);
with Combo do
begin
Parent := Form;
Style  := csDropDownList; // Caso o item possa ser digitado, altere aqui para csDropDowns
Items.Assign(AList);
ItemIndex := 0;
Left      := Prompt.Left;
Top       := Prompt.Top + Prompt.Height + 5;
Width     := MulDiv(164, DialogUnits.X, 4);
end;
ButtonTop    := Combo.Top + Combo.Height + 15;
ButtonWidth  := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent      := Form;
Caption     := 'OK';
ModalResult := mrOk;
default     := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent      := Form;
Caption     := 'Cancelar';
ModalResult := mrCancel;
Cancel      := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), Combo.Top + Combo.Height + 15,
ButtonWidth, ButtonHeight);
Form.ClientHeight := Top + Height + 13;
end;
if ShowModal = mrOk then
begin
Result := Combo.Text;
end;
finally
Form.Free;
end;
end;

Exemplo de Uso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure Tfrmproduto_pedido.BtnImprimirClick(Sender: TObject);
var
List: TStringList;
vResult : String;
indice : Integer;
begin
 
try
List := TStringList.Create;
List.Add('Sem Preço');
List.Add('Com Preço');
 
//Rseultado string do item selecionado
vResult := InputCombo('Seleciona o tipo de relatório', 'Descrição:', List);
 
// Se quiser o indice selecionado por fazer o seguinte
indice := List.IndexOf(vResult);
finally
List.Free;
end;
 
// Testando o retorno string
if (vResult = 'Sem Preço') then
begin
ShowMessage('Sem Preço');
end;
 
if (vResult = 'Com Preço') then
begin
ShowMessage('Com Preço');
end;
 
// Testando o retorno Integer
ShowMessage( List[ indice ]  );
end;

// Baseado em uma dica do site Planeta Delphi

  • Giovani Da Cruz
  • 0 comentários
  • 15 de setembro de 2015

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados