PDA

Ver la Versión Completa : cambiar color a messageBox


reina
01-02-2006, 17:36:37
Bueno a ver si me ayudan..necesito poner el color de las pantallas de mi aplicación a las cajas de mensajes..quisiera saber si hay algun modo de indicarle el color..parece una tontera pero ..es lo que piden
saludos y tkss!

LA PATRIA SERA LIBRE

jmariano
01-02-2006, 20:21:02
A las cajas de mensajes generadas por las funciones del API de Windows, como MessageBox, que yo sepa, es imposible cambiarles el color (toman el color y apariencia según esté configurado en el sistema por el usuario). Lo que si podrías hacer es crearte tus propias cajas de mensajes (derivando de la clase TForm ) y especificarles el color a través de la propiedad Color.

Saludos!

reina
01-02-2006, 20:33:59
si! tks..ahi lei recien que agarra esa funcion de la api..imposible cambiarle el color..pero bueno nunca se sabe..je. tks por tu recomendacion..voy a mandar el circuito de alarmas a un form creado por mi..en fin
saludoss

LA PATRIA SERA LIBRE

Héctor Randolph
02-02-2006, 00:18:01
Bueno, tal vez en MessageBox no sea posible, pero antes de crear una nueva función para mostrar los mensajes yo consideraría el truco que nos dió Román en este hilo.

http://www.clubdelphi.com/foros/showthread.php?t=29265

Como dice jmariano, puedes implementar una función que cambie el color de las cajas derivando de TForm, para esto podría ser util la función CreateMessageDialog.

Saludos

RicardoNavarro
05-02-2008, 16:15:37
Espero sirva


function MiMensaje(XTexto, XTitulo: String): Boolean;
var
LForm: TForm;
CaptionIndex, i: integer;
LNombres: array of string;
LFondo, LColor: TColor;
LICono: TMsgDlgType;
LBotones: TMsgDlgButtons;
begin
LFondo := clGreen;
LColor := clWhite;
LIcono := mtInformation;
LBotones := [mbOK];
SetLength(LNombres, 1);
LNombres[0] := '&Cerrar';
if XTitulo = 'Cuidado' then
begin
LFondo := clYellow;
LColor := clBlack;
LIcono := mtConfirmation;
LBotones := [mbYes,mbNo];
SetLength(LNombres, 1);
LNombres[0] := '&Si';
end
else if XTitulo = 'Peligro' then
begin
LFondo := clRed;
LColor := clYellow;
LIcono := mtWarning;
LBotones := [mbYes,mbNo,mbAbort];
SetLength(LNombres, 3);
LNombres[0] := '&Si';
LNombres[1] := '&No';
LNombres[2] := '&Cerrar';
end;
LForm := CreateMessageDialog(XTexto, LIcono, LBotones);
LForm.Caption := XTitulo;
LForm.Color := LFondo;
LForm.BorderIcons := [];
CaptionIndex := 0;
for i := 0 to LForm.ComponentCount - 1 do
begin
if (LForm.Components[i] is TLabel) then
begin
TLabel(LForm.Components[i]).Font.Style := [fsBold];
TLabel(LForm.Components[i]).Font.Color := LColor;
TLabel(LForm.Components[i]).Font.Size := 12;
end;
if (LForm.Components[i] is TButton) then
begin
if CaptionIndex > High(LNombres) then
Break;
TButton(LForm.Components[i]).Caption := LNombres[CaptionIndex];
Inc(CaptionIndex);
end;
end;
with LForm do
begin
try
ShowModal;
finally
Free;
end;
end;
if LForm.ModalResult = mrYes then
Result := True
else
Result := False;
end;