Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Größe des PaletteSet dynamisch ändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Größe des PaletteSet dynamisch ändern (1211 mal gelesen)
sebastian.
Mitglied



Sehen Sie sich das Profil von sebastian. an!   Senden Sie eine Private Message an sebastian.  Schreiben Sie einen Gästebucheintrag für sebastian.

Beiträge: 90
Registriert: 03.09.2009

Windows XP Prof. SP3
AutoCAD 2010
Visual Studio 2008 / 2010 Prof.

erstellt am: 04. Dez. 2009 10:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


ClassLibrary2.zip

 
Guten Morgen!

Ich habe in meinem Projekt ein PaletteSet mit zwei Reitern.
Diese sind unterschiedlich breit. Der erste Reiter etwas breiter, da hier viel Konfiguration vorgenommen wird, der zweite Reiter schmäler, über welchen das automatisierte Zeichnen angestoßen wird. Somit hat man während der Zeichenfunktionen mehr Platz für das AutoCAD Fenster und kann trotzdem das automatisierte Zeichnen steuern.

Wenn ich mein PaletteSet nicht andocke, kann ich die Größe sehr schön anpassen:

Code:
Private Sub EventHandlerPaletteActivated(ByVal sender As Object, ByVal e As PaletteActivatedEventArgs)

        If myPaletteSet.Dock = DockSides.None Then

            If e.Activated.Name = "Reiter 1" Then
                myPaletteSet.Size = New Drawing.Size(320, myPaletteSet.Size.Height)
            ElseIf e.Activated.Name = "Reiter 2" Then
                myPaletteSet.Size = New Drawing.Size(220, myPaletteSet.Size.Height)
            End If

        End If

    End Sub


Aber wenn ich das PaletteSet andocke, bleibt immer ein Rand:


Diesen kann ich dann nur von Hand weiter nach links schieben.
Wie kann ich es erreichen, dass nicht nur das PaletteSet kleiner und größer wird, sondern auch der Rand mitverschoben wird?

Im Anhang ein kleines Testprojekt...(wie Screenshot).

Danke für die Hilfe, Grüße, Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 04. Dez. 2009 13:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Sebastian,

leider, ich finde auf die schnelle mal nichts, womit das sauber gemacht werden kann. Ich werd aber, wenn mal mehr Zeit ist, noch stöbern gehen, aber mehr Zeit ist leider so schnell nicht in Aussicht. Darum hier die halb-kranke Variante, die vielleicht hilft:

Wenn das AutoCAD-Fenster nicht maximiert ist (hab ich nicht probiert), dann kannst Du in Deinem Event-Handling für Paletten-Aktivierung einbauen:

Code:
Dim tSize As System.Drawing.Size = ApplicationServices.Application.MainWindow.Size
ApplicationServices.Application.MainWindow.Size = New System.Drawing.Size(tSize.Width - 1, tSize.Height - 1)

Im Prinzip mach ich damit nichts anders, als das Hauptfenster von AutoCAD in der Größe zu ändern und damit AutoCAD indirekt zu überreden, das Update zu übernehmen.

Hoffe es hilft trotzdem, - alfred -

------------------
www.hollaus.at

sebastian.
Mitglied



Sehen Sie sich das Profil von sebastian. an!   Senden Sie eine Private Message an sebastian.  Schreiben Sie einen Gästebucheintrag für sebastian.

Beiträge: 90
Registriert: 03.09.2009

Windows XP Prof. SP3
AutoCAD 2010
Visual Studio 2008 / 2010 Prof.

erstellt am: 04. Dez. 2009 14:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Alfred,

danke für die Mühe!!

Dein "Trick" klappt bei nicht maximiertem Hauptfenster sehr gut.
Für alle, die mal was ähnliches suchen, hier nun mein Code:

Code:

Private Sub EventHandlerPaletteActivated(ByVal sender As Object, ByVal e As PaletteActivatedEventArgs)

            If myPaletteSet.Dock = DockSides.None Then

                If e.Activated.Name = strNameOfReiter1 Then
                    myPaletteSet.Size = New Drawing.Size(552, myPaletteSet.Size.Height)
                ElseIf e.Activated.Name = strNameOfReiter2 Then
                    myPaletteSet.Size = New Drawing.Size(332, myPaletteSet.Size.Height)
                End If

            ElseIf Application.MainWindow.WindowState = Window.State.Normal Then

                If e.Activated.Name = strNameOfReiter1 Then
                    myPaletteSet.Size = New Drawing.Size(517, myPaletteSet.Size.Height)
                ElseIf e.Activated.Name = strNameOfReiter2 Then
                    myPaletteSet.Size = New Drawing.Size(298, myPaletteSet.Size.Height)
                End If

                Application.MainWindow.Size = New Drawing.Size(Application.MainWindow.Size.Width - 1, Application.MainWindow.Size.Height - 1)
                Application.MainWindow.Size = New Drawing.Size(Application.MainWindow.Size.Width + 1, Application.MainWindow.Size.Height + 1)

            End If
        End Sub


P.S.: Es reicht nicht die Größe des Hauptfensters z.B. nur in der Breite kurz abzuändern...


Falls jemand noch eine Lösung bei maximiertem Hauptfenster findet, bin ich weiterhin interessiert  .

Grüße, Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 04. Dez. 2009 14:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Sebastian,

bei meinem Code oben hätte das AutoCAD-Fenster nur einmal gezuckt, bei Dir zweimal, ich denke meine Variante ist besser  

Ich werde noch suchen, ob es einen Window-Handle gibt, der upzudaten sein könnte.

- alfred -

------------------
www.hollaus.at

sebastian.
Mitglied



Sehen Sie sich das Profil von sebastian. an!   Senden Sie eine Private Message an sebastian.  Schreiben Sie einen Gästebucheintrag für sebastian.

Beiträge: 90
Registriert: 03.09.2009

Windows XP Prof. SP3
AutoCAD 2010
Visual Studio 2008 / 2010 Prof.

erstellt am: 04. Dez. 2009 15:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja, da hast du teilweise recht.

Aber wenn ich während eines "Programmdurchlaufs" öfter zwischen beiden Reitern hin und her wechsle, wird das Fenster immer kleiner und kleiner  . Das wollte ich damit vermeiden.

Alternativ könnte man vielleicht eine statische Variable nehmen, diese Toggeln und damit das AutoCAD Hauptfenster bei jedem Reiterwechsel mal größer und mal wieder kleiner werden lassen.

Grüße, Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 07. Dez. 2009 19:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebastian. 10 Unities + Antwort hilfreich

Hallo Problem ist meiner Meinung nach ein Bug. Ich hatte auch versucht über das Auslesen der Größe die Größe beim Start wieder herzustellen. Wenn man die Größen-Werte zum Bsp beim Ändern der Größe im Debugger mal verfolgt, ändert sich nicht das, was sich ändern sollte.

PaletteSet.Location.Y ist zum Bsp immer (PaletteSet.Location.X + PaletteSet.Size.Width)

Ich habe das Hantieren mit Größenänderungen aufgegeben.

Für das Wiederherstellen der Größenänderungen beim Starten (so dass diese so ist wie beim Verlassen) gibt es den folgenden Workaround:
PaletteSet = new Autodesk.AutoCAD.Windows.PaletteSet("Palette Set Test", "palettedemo", new Guid("A7C6681F-B717-4226-B20D-3192ED552F5E"));
Wenn man auf diesem Weg die PaletteSet erzeugt, übernimmt AutoCAD intern eben diese Einstellungen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sebastian.
Mitglied



Sehen Sie sich das Profil von sebastian. an!   Senden Sie eine Private Message an sebastian.  Schreiben Sie einen Gästebucheintrag für sebastian.

Beiträge: 90
Registriert: 03.09.2009

Windows XP Prof. SP3
AutoCAD 2010
Visual Studio 2008 / 2010 Prof.

erstellt am: 07. Dez. 2009 19:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Abend Holger!

Danke für die Infos.
Das mit der Guid beim Erstellen des PaletteSet Objekts ist mir auch schon aufgefallen. Ohne Guid wird die Größe nicht gespeichert, mit Guid schon...

Grüße, Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 07. Dez. 2009 20:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Ergänzung, wenn wer in die Tiefe suchen will: die Größe & Position & Verankerung der Paletten wird mit den Arbeitsbereichen gespeichert. Ändert man die Einstellungen, speichert den Arbeitsbereich, dann wird auch beim nächsten Start die Einstellung so reproduziert wie zuvor gespeichert.

>> ...Ohne Guid...

Vorsicht: ohne GUID wird einiges mit Paletten nicht funktionieren, spätestens wenn mehrere Applikationen mit Paletten aktiv sind, dann wird's möglicherweise ziemlich problematisch. D.h. immer beim Erstellen einer neuen Palette, ob in der gleichen Applikation oder in einer anderen eine neue GUID erzeugen lassen und verwenden!

- alfred -

------------------
www.hollaus.at

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz