PDA

Ver la Versión Completa : Bloquear creación de nuevo elemento en tiempo de ejecución.


chavarias
06-11-2013, 20:55:42
Buen día.

Estoy haciendo una práctica en Delphi en el cual se me pide:
- Implementación de listas, agregar un botón donde se pueda insertar elementos por el inicio de la lista.
- Además, agregar un botón que al dar clic se eliminen elementos de la lista (por el final).
- Modificar la práctica para evitar que la lista de botones creados en tiempo de ejecución, se "salgan" de la forma.

Ya lo tengo funcionando, pero el punto final no encuentro cómo puedo hacerlo.

Gracias de antemano por su ayuda.

Casimiro Notevi
06-11-2013, 21:34:04
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

ecfisa
06-11-2013, 22:33:57
Hola chavarias.


function IsButtonInsideForm(const FormR, ButtonR: TRect): Boolean;
begin
Result := PtInRect(FormR, Point(ButtonR.Left, ButtonR.Top) ) and
PtInRect(FormR, Point(ButtonR.Left+ButtonR.Right, ButtonR.Top+ButtonR.Bottom))
end;


Ejemplo de uso:

procedure TForm1.btnCrearClick(Sender: TObject);
var
i: Integer;
R: TRect;
begin
Randomize;
for i := 1 to 100 do
begin
R.Left := Random(1000);
R.Top := Random(800);
R.Right := 70;
R.Bottom := 21;
if IsButtonInsideForm(ClientRect, R) then
with TButton.Create(self) do
begin
Name := 'Button' + IntToStr(i);
Left := R.Left;
Top := R.Top;
Width := R.Right;
Height := R.Bottom;
Parent := Self;
end;
end
end;
...

Y por favor, no olvides leer nuestra guía de estilo como te sugirió Casimiro.

Saludos :)