2012-05-31 10 views
8

Provo a fornire all'utente un'interfaccia 'pulita e semplice' nascondendo alcuni elementi. Solo una piccola freccia indica che può espandere una parte della barra dei menu principale. Quando tutto è chiuso, che appare così:Perché il ridimensionamento dei controlli è diverso tra i PC?

enter image description here

Quando si apre tutto quello che assomiglia a questo:

enter image description here

Ogni freccia è un questo è speedbutton si trova sul lato sinistro di un pannello . Facendo clic sul pulsante, la larghezza viene alternata tra la larghezza del pulsante Velocità (chiuso) e la larghezza del pannello in fase di progettazione (aperta). La larghezza del pannello in fase di progettazione viene memorizzata come costante. I show_hide_controls procedura gestisce questo:

procedure TCompose_Main.show_hide_controls (key: string; Button: TSpeedButton; Panel: TPanel; width: Int32); 
begin 
    if GPA.iKey [key] = 1 
     then Panel.Width := width   // show panel, set panel to design width 
     else Panel.Width := Button.Width; // hide panel, set with to button width 
    Button.Glyph.Assign (nil); 
    Images_Left_Right.GetBitmap (GPA.iKey [key], Button.Glyph); 
end; // show_hide_controls // 

Questa routine si chiama come segue:

show_hide_controls ('Show Play Controls', // index to panel to show/hide 
        Enlarge_Play,   // Speedbutton requesting the enlargement/hide 
        Panel_Play,   // Panel to show/hide 
        cPlayWidth);   // Width of panel when shown 

Ora molti utenti segnalano che una parte del pannello è nascosto, come:

enter image description here

Sembra che il sistema operativo (Windows 7) giochi alcuni trucchi con il ridimensionamento. Non sono in grado di duplicare questo errore. Qualcuno capisce cosa sta succedendo qui? E c'è un modo pulito di programmare contro questo in un modo indipendente dalle impostazioni?

Aggiornamento Come GDF ha giustamente sottolineato nella sua risposta, ha a che fare con il ridimensionamento dei caratteri (pannello di controllo> Display). Questo si comporta in qualche modo strano sulla mia macchina. Cambiarlo al 150% ha un impatto minore mentre modificarlo al 125% ha un impatto maggiore. Come avrai intuito, ho provato il primo e non il secondo ridimensionamento. Solo quando un utente ha riportato il ridimensionamento dal 125% al ​​100%, è stato possibile replicare il suo errore sul mio computer.

Non sono riuscito a trovare una relazione tra i caratteri e i problemi che ho come è stato suggerito da diversi convenuti. Il mio sistema sta ancora soffrendo di tutti i test che ho fatto con Courier (non nuovo), Segoe UI, Tahoma e MS Sans Serif :-D. Forse indirettamente perché i controlli sono probabilmente ridimensionati per adattarsi al testo.

Come gestirlo? Non lo so, inizierò a sperimentare e ti farò sapere se trovo qualcosa.

Grazie a tutti per il vostro aiuto!

+0

Ir sembra proprio che la dimensione del carattere è il fattore principale, perché i controlli a cui non è associato il testo (i pulsanti immagine a sinistra, ad esempio) non sembrano essere interessati. Ti suggerirei di utilizzare la proprietà "Ancore" dei pannelli per mantenere il loro spazio relativo a sinistra, in modo da ridurre almeno l'impatto visivo. – jfoliveira

+0

@Jeferson - Ho provato con dimensioni di font diverse e non ho potuto duplicare il problema. Il triangolo giallo non ha testo ma scompare. – Arnold

+0

+1 e Star, questo problema è molto diffuso nel nostro sviluppo Delphi e deve essere conosciuto per chiunque voglia costruire una GUI veramente compatibile in Delphi. –

risposta

10

Se il tuo problema è ciò in cui credo, hai appena indicato la risposta. Windows 7 gioca con il ridimensionamento di determinati caratteri. Quando si installa Win7 su un PC, controlla le dimensioni del monitor e imposta la scala "predefinita" su 100% o 125% a seconda delle dimensioni del monitor. Il problema è che allo stesso tempo installa i file dei font sul computer. Usa un diverso file di font per i diversi "default" per alcuni dei font.

La mia ipotesi è che l'app utilizzi MS Sans Serif ... questo è uno dei tipi di carattere che ottiene installazioni di file di font diversi a seconda della scala utilizzata da Win7 come (predefinito).

Per verificare ciò, gli utenti dicono che la scala è impostata come predefinita, è possibile visualizzarla facendo clic con il pulsante destro del mouse sul desktop e selezionando "Personalizza", quindi "Display" in basso a sinistra.

Il seguente link mostra come modificare il file in uso-font nuovo all'originale http://www.rlvision.com/misc/windows_7_font_bug.asp

Tuttavia, vorrei fare un tentativo di scendere di questo tipo di carattere e aggiornare gli elementi di layout per lavorare come desiderata sul Win7 e sistemi operativi precedenti

Questo è quello che penso si sta trattando data la quantità limitata di informazioni che ci avete fornito ...

Aggiornamento Dal momento che mi ha ricordato quando y ou ha menzionato il diverso aspetto tra il 125% e il 150%. Volevo solo assicurarmi che tu fossi consapevole del fatto che i due diversi file MS Sans Serif hanno un aspetto migliore su diverse scale. Uno dei file di font sembra ottimo al 100% e al 150% ma orribile al 125%. L'altro file di font ha un bell'aspetto al 125%, ma è orribile a 100 e 150%.

io non ricordo quale file di carattere è che, ma so che il 2 colpevoli sono 1) SSERIFF.FON 2) SSERIFE.FON

+0

Grazie. Ci proverò e tornerò da te. – Arnold

+0

GDF: quale font predefinito dovrebbe essere usato? –

+1

@WarrenP: Tahoma, Verdana, interfaccia utente di Segoe, qualunque sia, qualsiasi carattere vettoriale di tipo True (che può essere scalato senza "passaggi"). Ancora meglio: usa sempre il carattere predefinito del sistema operativo (che non è stato MS Sans Serif da ... oh, non ricordo, Win 3.1?) –

Problemi correlati