Laden...

Forenbeiträge von DeveloperX Ingesamt 462 Beiträge

09.11.2005 - 20:11 Uhr

Hallo!

In diesem Fall würde ich es so machen:

Bei der Login-Seite macht man ein Postback und überprüft die Login-Daten. Wenn der Login erfolgreich war, dies in die Session schreiben (also z.B. die UserID) und ein Response.Redirect(..) auf die Unterseite machen.

Ich denke mal, dass wäre die gängige Praxis und da ich mit ASPX noch nicht soviel gemacht habe, kenn ich keinen anderen/besseren Weg.

mfg

08.11.2005 - 16:07 Uhr

Hallo Community!

Ich versuche gerade, über interop ein neues Adressbuch zu erstellen. Nach ewigem herumprobieren und suchen bin ich leider auch nicht weitergekommen.

Also:
Den Zugriff auf Outlook habe ich schon. Jetzt habe ich versucht die Methode

AddStoreEx ( System.Object Store , Microsoft.Office.Interop.Outlook.OlStoreType Type )

aufzurufen, nur weiss ich nicht, was der erste Parameter soll. Leider habe ich kein Outlook/Office SDK, dass das näher errklären könnte, gefunden.

Ist das die richtige Methode um ein Adressbuch anzulegen oder gibt es dafür was anderes?

btw: Outlook 2003, VS 2003, .NET 1.1

edit: Mittlerweile gelöst. So gehts:

session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderContacts).Folders.Add ("Neues Adressbuch", Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderContacts);

Vielen Dank schonmal!

mfg DeveloperX

06.11.2005 - 19:58 Uhr

Hallo!

Habs auch gerade gelöst (bin fast 1:1 zum gleichen Code gekommen wie progger).

Jetzt hab ich aber eine Frage: Hat das einen Grund warum ihr float.Parse() verwendet anstat auf float zu casten?

mfg

06.11.2005 - 02:25 Uhr

Vielen Dank an euch beide!

Werde es nun ohne Controls lösen!

mfg

06.11.2005 - 02:22 Uhr

Hallo jofenchel!

Das "* 100" gehört in die Klammer rein, ansonsten ergibt die Division 0 komma irgendwas, durch den Cast wird das dann 0 und die Multiplikation mit 100 ergibt dann logischerweise auch 0.

So sollte es also aussehen:

progress = (sbyte)(bytesRead * 100 / filelength);

mfg

05.11.2005 - 12:31 Uhr

Du könntest mit einem Stream zu der URL Connecten und dann bekommst du den HTML Code (habs leider mit .NET noch nicht probiert, aber mit JAva hab ichs mal gemacht. Ich schätze aber dass es mit .NET auch gehn wird)

mfg

04.11.2005 - 19:22 Uhr

Hallo!

Ich bin gerade am verzweifeln wegen transparenten Controls. Boardsuche, Google MSDN ... hat alles nichts geholfen.

Ich möchte so eine Art Formen-Editor machen (ala PowerPoint, also Rechtecke/Kreise/ usw.. in ein Panel ziehen und diese auch verschieben können). Verschieben usw geht, nur am zeichnen haperts noch ein bisschen. Im Moment hab ich erstmal nur eine Rectangle-Klasse (von Control abgeleitet) und möchte dass dieses Control NUR ein die 4 Linien des Rechtecks zeichnet, allerdings soll der Rest der Control-Fläche komplett transparent sein.


public partial class Rectangle : System.Windows.Forms.Control
    {
        public Rectangle()
        {
            InitializeComponent();

SetStyle(System.Windows.Forms.ControlStyles.AllPaintingInWmPaint
                | System.Windows.Forms.ControlStyles.Opaque
                | System.Windows.Forms.ControlStyles.OptimizedDoubleBuffer
                | System.Windows.Forms.ControlStyles.ResizeRedraw
                | System.Windows.Forms.ControlStyles.Selectable
                | System.Windows.Forms.ControlStyles.SupportsTransparentBackColor
                | ControlStyles.UserMouse
                | System.Windows.Forms.ControlStyles.UserPaint, true);
UpdateStyles();
}

int circle_height = 6;

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawRectangle(Pens.Black, circle_height / 2, circle_height / 2, Width - 1 - circle_height, Height -1 - circle_height);
}

ich bekomms einfach nicht hin ...
Hab auch schon versucht mit Clear(Color.Transparent) und alles, aber es ist nie durchsichtig.

Wäre sehr froh, wenn jemand eine Lösung parat hat oder gute weiterführende Links.

VS 2005 beta 2 (falls es wichtig ist)

Vielen Dank schonmal!

mfg developerx

03.11.2005 - 16:49 Uhr

du behandelst das "new mitte"-objekt als "oben"-objekt. du kannst dadurch allgemeine operationen durchführen (z.B. m.FunktionVonOben() ) ohne wirklich zu wissen, was das objekt genau (ob es oben, mitte oder unten) ist, hauptsache es ist von der oben-klasse abgeleitet.

du kannst also oben-objekte, mitte-objekte und unten-objekte in ein array packen und für jedes objekt in dem array die FunktionVonOben()-Funktion aufrufen. z.B.:


ArrayList arr = new ArrayList();
arr.Add ( new oben();
arr.Add ( new mitte());
arr.Add ( new unten());

foreach (oben obj in arr)
   obj.FunktionVonOben();

Kurz gesagt, du kannst somit Verallgemeinerungen darstellen.

Wenn du "oben m = new mitte()" schreibst, kannst du für m (also das mitte-objekt) nur die von der oben-klasse geerbten funktionen nutzen --> Verallgemeinerung.

mfg DeveloperX

03.11.2005 - 14:06 Uhr

Danke herbivore und xqgene!

ich habe mich jetzt dafür entstieden, alle Ausgaben in ein WebControl zu packen. Das ist für mich die perfekte Lösung, da ich ja viel ausgeben muss.

mfg developerx

02.11.2005 - 21:56 Uhr

So, ich greife mal das Thema auf denn ich brauche genau das, was atmosfear gebraucht hätte.
Warum ich kein Label benutzen kann? Ich möchte, dass der Benutzer den Text markieren kann, aber eben nicht verändern. Und wenn der Cursor dir ganze Zeit blinkt, ist das ziemlich irritierend.

Vielleicht weiss aja mittlerweile wer eine Lösung.

mfg developerx

02.11.2005 - 20:34 Uhr

Hallo!

Wie du ja schon geschrieben hast, kannst du dafür das Close-Event der SettingsForm abfangen.

mfg

02.11.2005 - 11:03 Uhr

Ich bin mir nicht sicher, aber ExecuteScalar() müsste helfen. Das liefet die erste Spalte der gerade bearbeiteten Zeile.

mfg

02.11.2005 - 08:52 Uhr

du hast vermutlich keinen entsprechenden Verweis auf die DLL angelegt.

26.10.2005 - 18:13 Uhr

na wunderbar 🙂

26.10.2005 - 17:26 Uhr

Also ich würds so lösen:

  1. Steigung k ausrechnen
    k = (P2.Y - P1.Y) / (P2.X - P1.X)

NeuerPunkt.X = P1.X + delta_x
NeuerPunkt.Y = P1.Y + delta_y

  1. ausgehend von der Formel "a² + b² = c²" die folgende Formel aufstellen:
    m² = delta_x² + delta_y²
    m ... die 5 PixelAbstand

  2. Die Formel: k = delta_y / delta_x umschreiben um in der obigen Formel "m² = ..." das delta_y zu ersetzen --> nach delta_x umformen.

---> delta_x = sqrt(m² / ( k + 1))
---> delta_y = k * delta_x

  1. Die Koordinaten des Punktes wie bei 1. beschrieben ausrechnen.

Ich hoffe, dass ich keinen Fehler gemacht habe 😉

mfg

24.10.2005 - 20:02 Uhr

Hallo!

Aus den beiden Punkten kannst du dir die Steigung k der Geraden ausrechnen:

k = (p1.y - p2.y) / (p1.x - p2.x)

und ausgehend von dieser Steigung und P1 kannst du dir 'd' ausrechnen:

y = kx + d --> d = y - kx

Aus dieser Gleichung kannst du widerrum die Y-Koordinaten der Endpunkte ausrechnen:
Einmal x = 0 und einmal x = <Controls.Size> einsetzen.

Und dann kannst du die Linie mit den errrechneten Punkten zeichnen.

Ich hoffe keinen Fehler gemacht zu haben, da ich es gerade leider nicht testen kann.

mfg

22.10.2005 - 21:11 Uhr

Hallo!

Ich hab gerade in der MSDN Libary nachgeschaut was SqlCommand.Prepare() macht:

Creates a prepared version of the command on an instance of SQL Server.

Habe ich das richtig verstanden, dass das Statement gleich am Server abgelegt wird? (Rein vom sprachlichen her hab ichs verstanden, jedoch kann ich mir das nicht ganz vorstellen ..). Bringt das performance-mäßig viel? Ich meine, anstatt immer ein SqlCommand zu senden, könnte ich dann ja beim Starten meiner Applikation alle SqlCommands gleich am Server platzieren und nur mehr die Parameter umsetzen und das Command ausführen, oder?

Und noch eine Frage:
Was bedeutet "To be supplied" bei "SqlCommand.Parameters.Add(object value)". Und warum wird diese Methode nicht im IntelliSense angezeigt. Hat das irgendwelche Gründe?

Und noch eine dritte Frage:
Wenn ich eine parametrisierte Abfrage habe, wie kann ich dann bestimmte Where-Bedingungen ungültig setzen.

Zum Beispiel habe ich eine Abfrage für Kontakte mit bestimmtem Wohnort:
"select * from kontakt where wohnort = @wohnort"

Wenn ich dann eine Abfrage für alle Kontakte haben will, muss ich eine neue erstellen oder kann ich den @wohnort-Parameter irgendwie so einstellen dass er einfach alle Werte für wohnort akzeptiert?

Btw.: .Net 2.0 (VS 2005 beta 2)

mfg DeveloperX

20.10.2005 - 12:51 Uhr

Hallo!

Das kannst du bei deinen Projekt-Settings machen.

Ich kann dir nur sagen wo man es beim VS 2005 findet (bei den anderen müsste es aber ähnlich sein): Projekt XY -> Properties --> Application --> Icon

mfg

18.10.2005 - 16:53 Uhr

Hallo inTrance!

Also verstecken kannst du die vererbten Properties folgendermaßen:


[Browsable(false)]                                       /* Hide in the properties window */
[EditorBrowsable(EditorBrowsableState.Never)] /* Hide in intellisense */
public new BorderStyle BorderStyle
{
   get { return base.BorderStyle; }
   set { base.BorderStyle = value; }
}

Standard-Wert kannst du so setzen:

[DefaultValue(<default_wert>)]

Für den Rest sollte das SDK bzw. Google helfen.

mfg

18.10.2005 - 15:36 Uhr

Die einfachste Möglichkeit wäre vermutlich folgende:
Bei Änderung im Textfeld den Wert in eine Datei speichern und diese Datei bei einem Webseiten-Aufruf auslesen und ausgeben.

Oder aber über eine Datenbank falls vorhanden.

Ich denke alles andere (Remoting, WebService etc.) wäre übertrieben.

mfg

18.10.2005 - 15:25 Uhr

Hallo!

Wenn du einen GraphicsPath hast, kannst du die Funktionen IsVisible und IsOutlineVisible verwenden.

Falls du bei MSDN angemeldet bist, kannst du dir den WebCast zu GDI+ ansehen: http://www.microsoft.com/germany/msdn/webcasts/detail.aspx?id=100258

Oder willst du abfragen, ob sich ein Punkt innerhalb eines n-ecks mit einem bestimmten radius befindet?

mfg

18.10.2005 - 08:02 Uhr

Hallo zusammen!

Könnte man nicht einfach versuchen, ein Remote-Server-Objekt zu erstellen um festzustellen ob man die 1. instanz ist oder nicht? Wenns klappt, macht man im Programm weiter, und wenns nicht klappt, erstellt man ein Proxy-Objekt und sendet die Daten an die 1. Instanz.

Dann würde man sich das mit dem Mutex sparen.

mfg

16.10.2005 - 22:02 Uhr

hi herbivore!

Vielen Dank für die Erklärung. Jetzt ists mir klar!

mfg

16.10.2005 - 21:24 Uhr

Achso, sry für die Verwechslung.

Aber was ist denn der Unterschied zwischen GotFocus und Enter? Weil Enter steht im Designer ja unter "Fokus"?

mfg

16.10.2005 - 20:09 Uhr

Wenn ich alles richtig verstanden habe könntest du ja TextBox.Enter abfangen und den "sender"-parameter zu TextBox casten. Dann weisst du welche TextBox den Fokus erhalten hat.

mfg

15.10.2005 - 14:03 Uhr

Ich weiß zwar gerade leider keine Antwort auf deine Frage, aber mich würde interssieren was du mit diesem Panel dann machen willst?

mfg

15.10.2005 - 14:00 Uhr

Hallo!

also ich würd die Inhalte in UserControls verpacken und bei einem Button-Klick dann erzeugen und an die gewünschte Position setzen. Und das alte UserControl dann natürlich disposen.

Andere Möglichkeit:
So wie du gemacht hast alle Panels im Designer gleich reingeben, diese einfach kleiner machen und beim FormLoad vom Fenster alle auf die richtige Position und Größe ändern und dann normal die Visible-Eigenschaften setzen.

mfg

14.10.2005 - 16:57 Uhr

Wow, das ging ja schnell!

Vielen Dank euch beiden, hat prima funktioniert!

Habs mit dem VB Artikel gemacht, in dem das mit der Registry erklärt wird.

14.10.2005 - 16:13 Uhr

Hallo zusammen!

Also folgenes Problem: Ich habe eine Anwendung in der die Daten mittels WebBrowser dargestellt werden (also ich erstelle ein HTML File mit den Daten und zeige das dann an) und darin sind normale Links (z.B. http://www.google.de) enthalten und Links zu anderen Teilen meines Programmes (z.B. zu einem anderen Kontakt) ... da diese Kontakte aber nicht als File existieren kann ich auch nicht über Dateiassoziationen gehen.
Wünschenswert wäre also ein quasi eigenes (ich nenns mal) Protokoll wie bei emule. also: ed2k://<irgendwas.

Nun will ich jeden Link (egal wo: Internet, Applikaton, Verweis in Word Dokument etc.) in folgender Form schreiben: MeineApp://ID=12345. Immer wenn so ein Link ausgeführt wird, sollte sich also mein Programm starten(Das mehrfache starten hab ich schon mittels Forumsuche verhindern können).

Wo muss mal also soetwas einstellen dass dann meine Applikation gestartet wird?

mfg DeveloperX

13.10.2005 - 12:30 Uhr

@Fabse:

Wie registriert man seine Applikation für "ed2k://" oder andere "Protokolle"?

mfg

05.10.2005 - 17:52 Uhr

Wo kommt denn die Fehlermeldung? Bei 'DataSet Vorschau' oder im Programm?

Ist die Spalte 'BenutzerID' wirklich ein string? Wenn es eine Zahl ist, musst du die Hochkomma weglassen.

Fügst du den commandText auch richtig zusammen? Oder benutzt du den Designer für die Abfrage?

Ein bisschen mehr Detail-Infos wären nicht schlecht.

mfg

05.10.2005 - 10:22 Uhr

wenn man keinen Anchor setzt, wird das Control relativ zur Fenster-Größe verschoben. Du solltest den Anchor auf Left|Top setzen damit das Control immer den fixen Abstand nch links und oben hat.

mfg

04.10.2005 - 12:41 Uhr

Naja, das Problem ist ja, dass der Benutzer auch offline arbeiten kann (z.B. im Zug, Zuhause, o.ä.).

04.10.2005 - 11:23 Uhr

Hallo!

Gibt es eine Möglichtkeit, an eine unveränderliche Uhrzeit zu kommen? Also nicht die Windows-Uhrzeit (die kann man ja verändern), sondern eine quasi "Basis"-Uhrzeit des PCs. Ich denke mal, dass Windows ja nicht die Hardware-Uhr umstellt wenn man die Windows-Uhr umstellt.

Grund dafür ist, dass ich Daten zwischen Client und Server synchronisieren muss (mit timestamps usw) und da wäre es könnte es zu Problemen kommen, wenn der Client plötzlich seine Uhrzeit umstellt.

Mfg

04.10.2005 - 10:05 Uhr

Hallo!

Du könntest die Eigenschaft SelectedNode.Level heranziehen. Die gibt an, in welcher "Tiefe" der Knoten ist.

Btw.: Ich weiss zwar nicht was du machen willst, jedoch würde ich persönlich die Methode mit dem Tag bevorzugen.

mfg

02.10.2005 - 20:00 Uhr

Du könntest anstatt eines Dialogs ein Panel mit der Textbox in die Mitte des Fensters setzen und bei dem Zahlenblock die Ziel-Textbox auf die Texbox im Panel festlegen.
Und wenn die Eingabe fertig ist, einfach das Panel unsichtbar machen und den Wert auslesen.

mfg

26.09.2005 - 22:03 Uhr

Der Typ char beinhaltet nur 1 Zeichen, du willst jedoch ein Wort (=mehrere Zeichen) eingeben. Daher musst du anstatt von char die Klasse string benutzen.

wort1 = Console.ReadLine();
...
Satz = wort1 + wort2 + wort3;

Warum setzt du die Wörter zu einem Satz zusammen und benutzt diesen nicht?

Console.WriteLine(satz);

mfg

26.09.2005 - 10:48 Uhr

Wenn du .NET 2.0 verwendest, kannst du die normale ProgressBar verwenden und die Style-Eigenschaft auf "Marquee" setzen.

mfg

26.09.2005 - 10:26 Uhr

Das Bild in ein Bitmap-Objekt laden (Bitmap.fromFile("..")) und dort gibt es die Funktionen getPixel(x,y) und setPixel(x,y,color).

mfg

25.09.2005 - 10:41 Uhr

Hallo

Du musst das Array-Element auf "string" casten weil die Delete-Methode kein object sondern string verlangt:

System.IO.Directory.Delete((string)dateilist[i]);

mfg

24.09.2005 - 10:27 Uhr

Wenn du .NET 2.0 programmierst, kannst du die Layout Komonenten verwenden (sind allesamt sehr nützlich).
ein konkretes Beispiel kann ich leider nicht geben, weil ich grade keine VS 2005 installiert habe.

Edit: Du könntest auch das Resize-Event (oder SizeChanged) abfangen und dort dein Control neu positionieren.

mfg

21.09.2005 - 22:34 Uhr

Ein Web User Control könnte dir weiterhelfen! Diese kannst du dann, je nach angeforderter Seite, mittels this.Controls.Add(LoadControl("ctl-name")) (oder so ähnlich) einfügen.

16.09.2005 - 21:12 Uhr

System.Drawing.Drawing2D.LinearGradientBrush dürfte weiterhelfen

16.09.2005 - 15:45 Uhr

Original von Ishildur
Das gehört zwar nicht hierhin, doch weiss jemand von euch ein gutes Tool zum viesuellen erstellen eines Datenbank ERD's (nur grafisch, muss kein Code erzeugen)

Ich kann nur Microsoft Visio empfehlen (müsstest du sogar haben wenn du dir VS2005 schicken hast lassen).

15.09.2005 - 16:53 Uhr
for (int k = an1.Length;  k = 1; k--)

sollte so lauten:

for (int k = an1.Length;  k == 1; k--)

mfg

13.09.2005 - 14:22 Uhr

Also ich würde es so machen:

Wenn ein Suchabfrage kommt, generiere ich einen zufälligen String der als Dateiname dient. Dann erstelle ich die Datei und schreibe das Such-Ergebnis da rein. Der Benutzer bekommt dann einen Link zu dieser Datei, und somit hat jeder Benutzer nur Zugriff auf seine Such-Ergebnisse. Nach einer gewissen Zeit kann man diese Dateien ja dann löschen (z.B. nach einem Tag) damit die Server nicht zugemült wird.

Zum zweiten Problem:
Um welche Größenordnung geht es denn hier?

mfg

13.09.2005 - 12:38 Uhr

naja, es ist dann halt 100% transparent 😉

meinst, du mit durchsichtig, halb-transparent?

13.09.2005 - 12:33 Uhr

Hallo!

Da der Code ja auf dem Server ausgeführt wird, ist es ja klar, dass die Datei auch am Server gespeichert wird.

Du könntest aber folgendes machen: Die Datei in dem Verzeichnis deiner Applikation speichern, und dann einen Link auf die Datei erstellen (oder mittels Response.Redirect(..) direkt auf die Datei weiterleiten)

mfg

13.09.2005 - 12:26 Uhr

Bei der Form den TransparencyKey auf eine Farbe setzen (z.B. Margenta) und dann wird jede Fläche die in dieser Farbe ist, Transparent.

mfg