Autor Beitrag
TheNeon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: So 20.04.03 18:16 
Hallo zusammen,

mein Problem:
unter Windows2000 sieht mein Prog wie gewollt aus, doch unter WindowsXP sind die Panels zu hoch ...... dies scheint daran zu liegen, dass unter WindowsXP (mit Designer-Modus) die Titelleiste so groß ist. Ich habe meine ziemlich klein gestellt ( 18 ) und die Differenz wird wohl an den Panels ausgelassen. :evil:

meine Frage:
wie kann ich die Größe der Titelleiste abfragen um meine Panels daran zu orientieren??

... oder gibt es eine andere (bessere) Lösung ??? :(

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein


Zuletzt bearbeitet von TheNeon am So 20.04.03 19:50, insgesamt 3-mal bearbeitet
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: So 20.04.03 18:56 
Du könntest die Fenstergröße auslesen und an die Panelgröße anpassen...
TheNeon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: So 20.04.03 19:11 
das funktioniet nicht, da diese immer gleich ist.

hab aber jetzt selbst mehr rausbekommen ....... ich muss die Größe der Titelleiste auslesen ....... dies geht mit sizeOf und TitleBarInfo, doch wie wende ich das an?!?

soweit bin ich schonmal:

s:=sizeof(TITLEBARINFO);

doch:
1. von welchem Typ ist s
2. funktioniert der Aufruf nicht ..... der Compiler meldet:
Undefinierter Bezeichner: 'TITLEBARINFO'

hab ich irgendwas vergessen ???????

ZusatzInfo:
msdn.microsoft.com/l.../gettitlebarinfo.asp

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: So 20.04.03 19:14 
Delphihilfe hat folgendes geschrieben:

Returns the number of bytes occupied by a variable or type.

Unit

System

Category

miscellaneous routines

function SizeOf(X): Integer;

Description

Pass a variable reference to SizeOf to determine the number of bytes used to represent the variable. Pass a type identifier to SizeOf to determine the number of bytes used to represent instances of that type. SizeOf is useful for determining the amount of memory to specify for the FillChar, Move, or GetMem procedures.


SizeOf gibt einen Integer zurück, warscheinlich in Pixeln.

Das Beispiel aus der Delphihilfe:
Zitat:
type

CustRec = record
Name: string[30];
Phone: string[14];
end;
var
P: ^CustRec;
begin
GetMem(P, SizeOf(CustRec));
Canvas.TextOut(10, 10, 'The size of the record is ' + IntToStr(SizeOf(CustRec)));
FreeMem (P, SizeOf(CustRec));
end;


Nach dem Stand der Dinge kann (oder ist) der Rückgabewert von SizeOf in Bytes.
TheNeon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: So 20.04.03 19:49 
hihi ...... ging schnell ........ hab das Problem anders gelöst bekommen:


var i : Integer;
begin
i:=GetSystemMetrics(SM_CYSIZE);
...


.... trotzdem vielen Dank

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein


Zuletzt bearbeitet von TheNeon am So 20.04.03 19:50, insgesamt 1-mal bearbeitet
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: So 20.04.03 19:50 
Bitte Bitte. Gerne geschehen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.04.03 20:33 
sizeof gibt, wie die Hilfe schon sagt die Größe eines Varaibalentypes oder Rekords zurück. Die Lösung die letztendlich gefunden wurde ist die einzig richtige.