Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Delphi] problema con ombra sotto ad un form

    ciao gente,
    mi sto arrovellando il cervelletto per trovare una soluzione ma non c'è stato verso...

    ho usato il sguente codice per far comparire l'ombra (drop shadow) dietro ad un form:

    codice:
    type 
      TForm1 = class(TForm) 
      protected 
        procedure CreateParams(var Params: TCreateParams); override; 
      end; 
    
    var 
      Form1: TForm1; 
    
    implementation 
    
    {$R *.dfm} 
    
    procedure TForm1.CreateParams(var Params: TCreateParams); 
    const 
      CS_DROPSHADOW = $00020000; 
    begin 
      inherited; 
     { Check Versione WIndows }
     if (Win32Platform = VER_PLATFORM_WIN32_NT) and
        ((Win32MajorVersion > 5) or
         ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))) then
       Params.WindowClass.Style := CS_DROPSHADOW; 
    end;
    e nel form principale, quello che deelphi vede come "Main Form" l'ombra compare, solo che io vorrei che la stessa cosa avenisse anche per un form che viene mostrato al click di un pulsante...

    ho provato ad usare la stessa procedura ma l'ombra NON si vede...

    che devo fare?

    ciao e grazie

  2. #2
    up

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,302
    La mia form secondaria, implementata come segue, mostra l'ombra perfettamente:
    codice:
    { TShadowForm }
    
      TShadowForm = class(TForm)
      private
        { Private declarations }
      protected
        { Protected declarations }
        procedure CreateParams(var Params: TCreateParams); override;
      public
        { Public declarations }
      end;
    codice:
    { TShadowForm }
    
    procedure TShadowForm.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.WindowClass.style := Params.WindowClass.style + CS_DROPSHADOW;
    end;
    ...e se funziona a me...... :quipy:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    scusa il ritardo.. antispam ferreo...

    grazie per aver testato il codice... da cosa poterbbe dipendere il fatto che a me non si vede?
    può essere che la presenza di un componente che "skinna" i form inibisca questa procedura?

    che dovrei controllare secondo te?

    ciao e grazie

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,302
    A questo punto può trattarsi di qualsiasi cosa...ma considerando che hai un componente per applicare skin al programma, è facile che sia quest'ultimo a "sovrascrivere" gli stili delle finestre.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    trovato l'inghippo!!!!!!!!!!!

    sul desktop SI VEDE, ma visto che il form appare sovrapposto ad un altro, l'effetto NON è visibile...

    come poteri fare?

    grazie

  7. #7
    problema risolto!

    codice:
    FORMSTYLE:=StayOnTop
    :mavieni: :mavieni: :mavieni:


  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,302
    A mio avviso, è comunque una soluzione discutibile.

    La caratteristica "stay on top" viene genericamente attribuita a finestre particolari che l'utente decide di impostare come "sempre in primo piano"...

    Se la finestra di un programma qualsiasi mi viene forzata in primo piano solo perchè così si vede una semplice ombra sotto, mi vien da storcere il naso.

    La soluzione a un problema comunque trascurabile potrebbe implicarne altri 100 che invece non posso essere ignorati.

    Ovviamente, IMHO.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    sono daccordo con te, ma il form che "obbligo" a stare in primo piano è un menu: tipo quello che appare premendo su StART in windows.

    visto che poi, una volta cliccata la voce il form scompare, non dovrei rompere le scatole agli utenti

    ciao ciao

    (almeno spero )

  10. #10
    scusate se riprendo questi vecchi post ma avrei una domanda:
    ho due form e mi interessa mettere la secondaria a StayOnTop, come posso fare? se metto così FORMSTYLE:=StayOnTop rimane solo in primo piano rispetto alla principale mentre io voglio che sia in primo piano rispetto al mondo
    La tua radio preferita sempre con te
    Forum home page
    - Provoca il più bravo ... morirai come uno schiavo (Hackers)
    - Non è la grana che ti spinge ma la voglia di essere UN NOME INCISO A FUOCO NELLA STORIA (Gemelli Diversi)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.