Laden...

Forenbeiträge von der-Webdesigner Ingesamt 54 Beiträge

30.12.2008 - 15:16 Uhr

Danke für die Links! Habs mir mal angeschaut und es wäre jetzt natürlich schon nochmals ein großer Aufwand sich in diese "Scriptsprache" einzulesen...es wundert mich nur, dass es scheinbar mit dem Setup-Projekt von VS einfach nicht machbar ist...oder sehe ich das falsch?

Lg,
Manuel

30.12.2008 - 03:00 Uhr

Hallo!

Leider funktioniert auch das nicht, so dass der Ordner noch immer bleibt. Nach dem Aufruf von Msiexec rufe ich sofort Application.Exit() auf, so dass mein Programm (der Uninstaller) noch vor der Installationsroutine beendet ist.

Gibt es noch andere Möglichkeiten?

Vielen Dank für die Hilfe!
Manuel

29.12.2008 - 02:10 Uhr

Aber die mit dem Uninstaller-Tool dürften doch dann das gleiche Problem wie ich haben, so dass der Ordner nicht mitgelöscht wird weil das Tool in dem Ordner ja noch ausgeführt wird.

29.12.2008 - 01:57 Uhr

Hi du!

Das ist auf jeden Fall eine gute Idee mit der es gehen könnte. Aber wie machen es denn andere Programme? Sonst müsste ich irgendwann ja mein Temp-Verzeichnis voll von Deinstallern haben oder nicht?
Interessant finde ich jedenfalls, dass sich der Deinstaller selbst löschen kann während er läuft, der Ordner bleibt aber. Das finde ich irgendwie merkwürdig 😉

Danke auf jeden Fall für deine Hilfe! 😃
Manuel

29.12.2008 - 01:38 Uhr

Hallo!

Danke für deine schnelle Antwort.
Das mit der Batch-Datei hatte ich eben mal ausprobiert und das scheint auch soweit zu funktionieren, aber ich würde gerne noch zusätzlich ein paar Dinge ausführen bzw. löschen, die das Setup nicht kennt.
Also habe ich mir gerade mal zum testen ein eigenes Programm geschrieben und aus dem Programm raus führe ich dann Msiexec aus. Dann schmiert er aber am Schluss der Deinstallation immer ab und sagt, dass der Prozess noch ausgeführt wird. Er kann dann den Ordner meines Programms nicht löschen. Alle Dateien sind weg, nur der Ordner bleibt jedes Mal.

Hier der Code den ich für meinen Uninstaller verwende:

static void Main()
{
    string productCode = "{...}";
    string path = Environment.GetFolderPath(Environment.SpecialFolder.System);
    Process proc = new Process();
    proc.StartInfo.FileName = string.Concat(path, "\\msiexec.exe");
    proc.StartInfo.Arguments = string.Concat(" /x ", productCode);
    proc.Start();
    proc.WaitForExit();

    string applicationPath = Environment.CurrentDirectory.ToString();
    // hier soll der Ordner gelöscht werden, weil der irgendwie noch da ist, warum auch immer
    Directory.Delete(applicationPath,true);
}

Vielen Dank für jegliche Hilfe!
Manuel

29.12.2008 - 00:39 Uhr

Hallo zusammen!

Ich hätte gerne im Startmenü zusätzlich zu meiner eigenen Programmverlinkung einen Deinstaller, heißt bei der Installation soll die Verlinkung erzeugt werden plus ein Uninstaller. Gibt es die Möglichkeit, sowas direkt über VS2005 zu erzeugen? Denn bei einem Rechtsklick auf das Projekt kann ich mein Programm direkt deinstallieren, wobei er dabei das normale Setup nimmt. Das Setup ist nach der Installation aber für gewöhnlich nicht mehr verfügbar, da das Programm ja dann fertig installiert ist. Als einzige Möglichkeit bleibt daher momentan die Deinstallation über die Systemsteuerung. Ich hätte aber gerne einen eigenen Deinstaller, mit dem die Deinstallation ohne den "Umweg" über die Systemsteuerung möglich ist.

Kann man sowas einfach selbst entwickeln oder gibt es da etwas "Vordefiniertes", was ich direkt aus VS2005 erzeugen könnte?

Lg und vielen Dank,
Manuel 😃

26.09.2008 - 03:05 Uhr

Wow genial, ich bin begeistert!

Vielen lieben Dank für deine Hilfe! Würdest du mir als "Anfänger" auch noch sagen woran es denn nun lag? Was genau ist anders, dass es jetzt geht?

Liebe Grüße,
Manuel

23.09.2008 - 00:16 Uhr

Dankeschön, dass du auch 10 Monate nach deinem eigentlichen Thread noch darauf antwortest! 🙂

Das Problem ist übrigens unabhängig von der Komponente auf der man die Zeilen zieht. Ich ziehe die Zeilen auf einen Button. Ich kann danach machen was ich will, das Dgv muss jedes Mal wieder 2 Mal angeklickt werden. Ein focus() hilft ebenfalls nicht...ich dachte vielleicht würde das Dgv den Fokus verlieren, aber das tuts doch nicht. Der Grund dafür ist ja scheinbar die oben genannte Zeile im Quellcode. Ich verstehe nur nicht den Unterschied warum der Aufruf abhängig von der Methode ist, denn beim MouseMove wird exakt das gleiche gemacht, doch da tritt dieser "Fehler" so nicht auf. Sogar im Microsoft-Forum wurde es bei Multi-Drag so empfohlen. Doch wenn der Fehler sogar bei deinem Minimalbeispiel auftritt kann es ja "glücklicherweise" nicht an meinem Gesamtcode liegen g

Also falls jemand Ideen hat...

Vielen Dank,
Manuel

22.09.2008 - 04:12 Uhr

Hallo rokohl!

Ich habe zur Zeit leider genau das gleiche Problem und bin nach viel Suche im Forum auf deinen Thread gestoßen. Hast du mittlerweile eine Lösung für dein Problem gefunden oder weiss jemand anders rat?
Bei mir taucht dieses Problem nur beim Multiselect auf wenn ich folgendes in der MouseDown-Methode verwende:
DragDropEffects dropEffect = dgv.DoDragDrop(dgv.SelectedRows, DragDropEffects.Move);

Gleiches schreibe ich in der MouseMove-Methode, aber da macht es keine Probleme. Doch sobald ich das in der MouseDown verwende, muss ich anschließend 2 Mal aufs DGV klicken damit es reagiert. Verwende ich die Zeile nicht, sind alle Zeilen vom Multiselekt deselektiert wenn ich die Zeilen rüberziehen möchte. Ein manuelles Selektieren beim DragAndDrop war mehr oder weniger unschön, daher wüsste ich gerne ob es irgendeine Möglichkeit gibt dieses Problem zu lösen.

Vielen lieben Dank,
Manuel

09.09.2008 - 19:12 Uhr

Ja ich weiss, es tut mir auch leid, dass ich sowas immer wieder frage... manchmal nicht ganz einfach ist da er nicht so schnell aufgibt

Könnte man denn dann einfach die Datei öffnen und anschließend wieder schließen, ohne dass das zu viele Resourcen verbrauchen würde? Denn wenn ich die Daten ja nicht auslese müsste die Open-Methode doch eine gar nicht so schlechte Lösung sein...

Lg,
Manuel

09.09.2008 - 15:54 Uhr

Danke dir! 🙂

Nur was mache ich wenn ich zum öffnen gar nicht diese Methode verwende? Einfach damit zusätzlich öffnen um die Datei zu blocken fände ich ineffektiv 😉

Lg,
Manuel

09.09.2008 - 04:39 Uhr

Hallo herbivore!

Ich habs mittlerweile geöffnet und unter einem anderen Namen temporär gespeichert. Doch wie kann ich nun FileShare auf None setzen? Mein Problem ist, dass ich einfach die ActiveX-Komponente für Pdf-Dateien verwende. Gibt es da auch eine Möglichkeit die Datei vom Programm aus zu blockieren?

Vielen Dank,
Manuel

27.08.2008 - 01:36 Uhr

Hi Marco!

Also Berufserfahrung hast du quasi schon neben dem Studium gesammelt, aber sonst noch nicht in dem Bereich tätig gewesen? Was ist das denn für einen Abschluss den du hast?

Ich weiss nicht ob ich da jetzt total schlecht schätze, aber so 35.000 im Jahr dürften als Anfang "fair" sein, je nach Wissensstand auch etwas mehr. Vor allem musst du ja noch meist 6 Monate Probezeit absolvieren und bekommst danach dann etwas mehr Gehalt. Finde sowas auch immer sehr schwierig, aber wenn deine Referenzen sehr gut sind, dann glaube ich, dass man sich spätestens beim Bewerbungsgespräch einig werden kann.

Lg,
Manuel

25.08.2008 - 04:05 Uhr

Ich habe jetzt sowohl den Reader, als auch die Vollversion des Acrobat mehrfach installiert + deinstalliert, versucht die Registry sauber zu bekommen aber es kommt immer wieder dieser Fehler. Ich weiss leider wirklich nicht mehr was ich noch tun soll...

Das Problem mit den Components unter Vista hab ich gelöst...man darf VS nicht als Admin starten, was ich dummerweise aber muss. Aber egal, so kann ich wenigstens kurzzeitig an die Komponenten kommen um diese hinzuzufügen.

Weiss jemand bei meinem Problem Rat? Vielen lieben Dank,
Manuel

21.08.2008 - 14:36 Uhr

Hi zusammen!

Ich verwende jetzt einfach die Komponente aus Visual Studio um meine pdf anzuzeigen und fertig. Das andere ist scheinbar so nicht einfach machbar laut Adobeforum oder nur mit extrem viel Aufwand. Zudem braucht man für viele Dinge auf jedem Client dann die Vollversion des Acrobat und meiner Meinung nach ist die Doku da sehr unübersichtlich, da man kaum weiss was wofür ist und was man womit machen kann.

Jetzt habe ich aber das Problem, dass ich die Komponente auf meinem Laptop (WinXP, 32 Bit) einfach im COM-Tab der Toolbox hinzufügen kann. Auf meinem PC (Vista, 64 Bit) habe ich im gegen Satz zu den bestimmt 200 Komponenten auf XP nur 2 Stück. Wenn ich jetzt einfach die Libs, die hinzugefügt werden sobald ich die Adobe Reader-Komponente verwende, auf meinen PC kopiere, bekomme ich zur Laufzeit den folgenden Fehler:

Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

Dieser Fehler kommt bei folgender durch den Designer generierten Codezeile, nachdem das Control meiner Form hinzugefügt wurde:

((System.ComponentModel.ISupportInitialize)(this.axAcroPDF1)).EndInit();

Ich wäre euch für jegliche Hilfe sehr dankbar.

Liebe Grüße,
Manuel

16.08.2008 - 23:14 Uhr

das temporäre Speichern ist eigentlich nicht das Problem.

So, das Packen geht mittlerweile, am Entpacken bin ich gerade dran. Dort muss ich dann jedoch einen Pfad angeben wohin ich die Datei entpacken lassen möchte. Was genau wolltest du mir denn mit dem Satz sagen? Dass es kein Problem ist die Datei generell temporär zu entpacken oder dass man die Datei, während sie vom Nutzer geöffnet ist, irgendwie anders geschickt verstecken kann?
Denn wenn ich die zip-Datei mit einem Passwort schütze, derjenige die Datei mit meinem Programm öffnet, die temporär abgelegte Datei kopiert während er die Datei geöffnet hat, dann bringt mir auch der Passwortschutz mal wieder wenig bis gar nichts. 😉

Hat jemand dazu vielleicht eine Idee? Oder bindet man die Datei einfach nur ein und löscht sie auf der Stelle wieder?

Lg,
Manuel

15.08.2008 - 16:30 Uhr

Ach einfach pdf-Dateien, die man nur mit dem Programm öffnen können soll, weil man sie sonst darüber runterlädt und sie dann einfach weiter verteilen kann ohne dass das Programm dafür genutzt werden muss.

15.08.2008 - 14:19 Uhr

Ich bin mittlerweile auf das Acrobat SDK gestoßen. Das schaut gar nicht mal schlecht aus, denn in der Doku steht, dass ich damit pdf-Dateien aus C# raus kontrollieren kann. Falls ich lediglich steuern will, reicht dafür laut Doku die Browserkomponente. Das Problem ist wenn ich es ohne Browserkomponente mache, ich alles selbst programmieren muss, heißt Suchfunktion, Blättern, drucken usw.

Hat jemand mit dem SDK schon Erfahrungen gesammelt? Denn was ich gerne würde ist zunächst einfach nur die aktuelle Seitenzahl auslesen, abspeichern und dann bei einem Klick auf die abgespeicherte Zahl die Seite wieder aufrufen. Zweiteres ist scheinbar kein Problem, da ich Zugriff auf einfache Funktionen über die URL habe. Aber das Auslesen scheint nicht so einfach machbar zu sein.

Danke für eure Hilfe,
Manuel

15.08.2008 - 12:06 Uhr

Dankeschön. Die Lib hatte ich mir die Tage auch schon runtergeladen. Ich werds einfach mit nem Passwort versuchen und das entsprechend verschlüsseln und fertig. Reicht ja auch aus und ich nutze wie gesagt den Vorteil, dass die Datei komprimiert ist und somit schneller heruntergeladen werden kann.

Dankeschön euch beiden! Dieses Forum ist wirklich klasse! lob
Manuel

15.08.2008 - 11:23 Uhr

Dankeschön euch beiden.

Hatte vor, das Passwort aus der DB dann nochmals irgendwie zu modifizieren durch einen eigenen Algorithmus, aber auch an den kommt man dann ja dran. Heißt der sollte einfach möglichst gut versteckt sein? Ich wollte demnach das Passwort aus der DB um eine gewisse feste Länge erweitern und es umstellen, falls jemand das Passwort irgendwie beim Datentransport abfangen sollte.

Das rar-Dateiformat erschien mir dafür sinnig, da ich somit zusätzlich den Vorteil habe, dass meine Dateien komprimiert sind und der Download entsprechend schneller geht. Ich bin mir nur unsicher wie das mit dem Entpacken ist, denn wenn ich die Datei anklicke sollte sie auch möglichst schnell angezeigt werden. Temporär wäre die Datei dann aber wenigstens nicht sichtbar? Das wäre auf jeden Fall schon mal etwas.
Zusätzlich könnte man das rar-Archiv dann noch unlesbar machen indem man ein paar Bytes ändert oder? Das wären immerhin 2 Dinge, die man rausfinden müsste um an die wirkliche Datei zu kommen und wenn ich diese Algorithmen von Zeit zu Zeit ändere wärs sogar richtig Arbeit das immer wieder rauszufinden bzw. nachzuschauen. 😉

Lg,
Manuel

15.08.2008 - 02:19 Uhr

Keiner eine Idee? Ich hatte jetzt mehrfach iTextSharp im Forum gelesen, aber mir scheint, dass das eher für die Erstellung und Editierung von pdf-Dateien ist, als weniger für das Anzeigen gleicher.

Danke für eure Hilfe,
Manuel

15.08.2008 - 02:16 Uhr

Hi zusammen!

Ich würde gerne über mein Programm pdf-Dateien anzeigen lassen. Diese sollen aber nur und ausschließlich mit meinem Programm darstellbar sein. Meine Idee war es daher, einfach rar-Dateien mit Schlüssel auf einem Online-Server abzulegen, diese herunter zu laden und die rar-Datei dann zu entpacken wenn der User sich die pdf anschauen will und anschließend wieder zu löschen. Somit würde man ja nicht direkt an die pdf kommen ohne das Programm, das den Schlüssel dazu kennt. Unsicher bin ich mir aber, da ich vermute, dass die Datei dann irgendwie temporär nach dem Entpacken sichtbar ist, heißt dass man sie dann einfach kopieren könnte.

Hättet ihr andere Ideen? Würde es mehr Sinn machen, einfach bestimmte Bytes in der pdf-Datei abzuändern? Gibt es vielleicht sogar die Möglichkeit der Verschlüsselung der Dateien?

Vielen Dank für eure Meinungen,
Manuel

15.08.2008 - 02:11 Uhr

Okay, ich hatte es schon fast vermutet, dummerweise nur falsch gesucht und erst gerade gefunden...man kann ganz einfach die Colordepth auf 32Bit stellen.

Lg,
Manuel

11.08.2008 - 16:52 Uhr

Hey ihr beiden!

Also ich habs jetzt endlich geschafft nach viel rumprobieren, mir eine eigene Klasse für die Cells zu schreiben, habe dabei die Paint-Methode überschrieben und ändere die Sterne indem ich einfach die OnClick-Methode überschrieben habe und dort anhand der Pixel sehe, welcher Stern angeklickt wurde. Nicht sonderlich schön, klappt aber. Nach zich gelösten Problemen stehe ich jetzt vor einem, bei dem ich mir unsicher bin obs einfach nicht lösbar ist oder ob ich etwas falsch mache.

Und zwar tausche ich sobald eine Zeile selektiert wurde die Icons aus mit entsprechendem Hintergrund, da ich bei Transparenz mit PNG Probleme hatte. Soweit auch kein Problem. Ich prüfe in der Paint-Methode ob die Zeile selektiert ist, zeichne den entsprechenden Hintergrundwert und zeichne darüber dann die Grafiken. Jetzt habe ich aber das Problem, dass der andere Farben zeichnet als sie im Original-Bild sind. Das sieht man bei den Sternen, denn deren Hintergrund ist eine andere Farbe als der Hintergrund der Zeile. Liegt das an sowas wie "Websicheren Farben", also dass man beim selber zeichnen von Grafiken nur ne bestimmte Palette hat oder wie?

Zeichnen tu ich die Bilder übrigens über eine ImageList und dann über die Draw-Methode.

Danke für jegliche Hinweise 🙂
Manuel

08.08.2008 - 02:39 Uhr

Dankeschön!

Ich hab mir jetzt alle Artikel mehrere Stunden durchgelesen und alles ausprobiert...ich bekomme es leider einfach nicht hin.
Was ich geschafft habe ist die Paint-Methode zu überschreiben und damit dann 5 Buttons darzustellen. Diese sind jetzt aber nicht mehr anklickbar. Der Artikel von Microsoft beschreibt ja wie man Radiobuttons dort einfügt, doch irgendwie ist der total unvollständig, denn der interessante Teil, wo die Radiobuttons erzeugt werden, fehlt leider. Daher komme ich nur bis zu dem Punkt, dass ich verstehe wie es grundsätzlich gedacht ist, aber darüber hinaus weiss ich nicht was genau ich machen soll. Codeproject hat leider auch keine guten Beispiele parat außer einen ColorPicker, der sich aber mit VS2005 nicht öffnen lässt.

Was genau muss ich also tun, damit diese Buttons auch anklickbar sind? Vor allem würde ich die Buttons gerne mit einem Hintergrundbild versehen. Das habe ich mit DrawButton() auch schon geschafft, auch wenn der Button dummerweise immer kurz sichtbar ist. Alternativ könnte ich demnach auch einfach Bilder darstellen, die irgendwie anklickbar sein müssten + ein Mouseover-Event haben müssten, da ich sie beim Mouseover gerne anders darstellen möchte.

Was ich grundsätzlich machen möchte:
5 Sterne nebeneinander, die man anklicken und somit eine Bewertung für diese Zeile geben kann. Heißt wenn ich über den 2. Stern gehe, soll Stern 1 ebenfalls durch eine Hover-Grafik ersetzt werden. Aber das ist denke ich nicht das Problem. Was ich nicht weiss ist, wie ich diese Bilder dann anklicken könnte um dann in meiner lokalen Datenbank den Wert für diese Zeile zu ändern...und eine ImageColumn mit nur einem Bild und dann über den geklickten Pixelwert, falls das irgendwie gehen sollte, fände ich sehr unschön.

Vielen Dank für jegliche Hilfe/Ansätze,
Manuel

07.08.2008 - 17:24 Uhr

Hi zusammen!

Da hier gerade die Suche nicht funktioniert und ich auch über Google nicht fündig geworden bin, würde ich gerne wissen ob es möglich ist, mehrere Buttons in einer DataGridViewButtonColumn zu positionieren. Ich würde gerne eine Art Bewertungssystem machen, dass man auf einen der Buttons klickt und entsprechend die Bewertung für diese Zeile geändert wird. Dabei würde ich aber ungerne mehrere Spalten verwenden wollen.

Vielen Dank für eure Hilfe,
Manuel :evil:

07.08.2008 - 03:35 Uhr

Hi Andreas!

Danke, dass du mich auf dieses großartige Projekt aufmerksam gemacht hast.
Gibt es eigentlich etwas, was ich beachten muss wenn ich die Farben ändere? Denn in der Vorschau von VS sind diese bei mir sichtbar, sobald ich aber kompiliere und starte sind diese im gestarteten Projekt nicht mehr sichtbar bzw. wieder so, wie du sie am Anfang eingestellt hattest.

Lg,
Manuel

06.08.2008 - 20:48 Uhr

Ich habs jetzt mal unter Windows Vista probiert und habe leider den Fehler, dass es zwischen Client-Area und Non-Client-Area transparent ist. Bei der Funktion weiss ich leider noch immer nicht, wie ich diese einsetzen soll.

Danke für eure Hilfe,
Manuel

29.07.2008 - 14:24 Uhr

Ich habs gerade mal ausprobiert, es scheint jedoch nicht wirklich was zu ändern. Schade. 😉

29.07.2008 - 14:18 Uhr

[EDIT=herbivore]Abgeteilt von [Artikel] Custom Window Border für Form's[EDIT]

Andreas? Darf ich fragen wie genau das funktioniert, dass das Flackern verhindert wird und wo ich den Quellcode einbinden muss? Ersetze ich einfach die DrawNonClientArea-Methode durch deine? Und was muss ich einbinden, damit CWin32 erkannt wird?

Vielen lieben Dank,
Manuel

29.07.2008 - 13:12 Uhr

Hallo ihr beiden!

Dann habe ich wohl nach den falschen Themen gesucht. Ich werde auf jeden Fall drauf achten herbivore.

Der Artikel hilft mir zum Teil schon mal weiter. Ich muss nur gestehen, dass ich den Quellcodeteil, der das Flackern verhindern soll, überhaupt nicht verstehe.
Die Meldungen so abzufangen ist sicherlich eine gute Idee, aber die Border habe ich jetzt schon mit einem anderen Panel gezeichnet, in dem die OnPaint-Methode überschrieben wird. Somit kann ich meinem Panel auch andere Border-Farben zuweisen. Die restliche GUI habe ich im Design-View erstellt, heißt damit würde ich dann natürlich auch gerne weiter arbeiten, auch wenns sicherlich nicht ganz so professionell ist wie das Beispiel von egrath.

Ich bin mir zudem unsicher wo dort im Quellcode definiert wird, dass sich diese Form skalieren lässt.

Wahrscheinlich würde es für meine Zwecke dann reichen, wenn ich einfach 4 unsichtbare Panels in den Ecken platziere und die entsprechenden Funktionen anschließend aufrufe. Lediglich das Flackern müsste ich dann noch in den Griff bekommen.

Danke euch beiden,
Manuel

29.07.2008 - 05:00 Uhr

Hi zusammen!

Ich hätte da nochmals eine Frage...und zwar habe ich bei meiner Form den FormBorderStyle auf None gesetzt und somit mein eigenes Design kreiert. Das Verkleinern, Maximieren, Schließen und Verschieben der Form klappt bereits alles super, außer dass die Maximieren-Property die Taskbar verdeckt. Aber das ist erstmal nicht weiter schlimm.

Nun möchte ich meine Form natürlich auch vergrößern und verkleinern können. Dazu habe ich mir beispielsweise ein 3x3 Panel in die linke obere Ecke gelegt und den Cursor beim Mouseover verändert. Anschließend verändere ich einfach die Größe und die Position meiner Form beim MouseDown.
Mein Problem dabei ist, dass es extrem häßlich aussieht, da zuerst skaliert wird, also nach unten rechts hin und danach verschiebe ich das Fenster nach oben links. Somit simuliere ich eigentlich exakt das Verhalten einer Form wenn sie skaliert wird, aber es flackert ganz schön und wenn man schnell skaliert sieht man sehr deutlich, dass die beiden genannten Schritte nacheinander ausgeführt werden.
Gibt es da vielleicht eine schönere Lösung oder würden 2 Threads dafür Abhilfe schaffen?

Was denkt ihr darüber wenn ich meine Form lediglich unten rechts skalierbar machen würde, denn da ist es ja recht einfach, da ich lediglich die Größe der Form verändern muss, mehr nicht.

Danke für eure Hilfe/Meinungen.
Manuel

28.07.2008 - 18:43 Uhr

Das hatte ich mir schon gedacht, nur leider hätte ich dann wie gesagt keinen Zugriff von meinem Programm aus denke ich. Daher müsste ich wohl eine andere Möglichkeit finden. Ich hatte bereits irgendwas über ActiveX gelesen, bin mir aber nicht sicher ob das eine Möglichkeit wäre.

Dankeschön schonmal für deine Antworten 🙂
Manuel

28.07.2008 - 18:35 Uhr

Aber hätte ich dann auch Zugriff auf die aktuell angezeigte Seite usw.?

28.07.2008 - 18:10 Uhr

Hi zusammen!

Ich weiss, zum Thema pdf gibt es schon einiges, aber die Suche hat mir bei meiner Frage noch nicht so recht weiter geholfen.

Und zwar würde ich gerne eine pdf-Datei in meinem Programm anzeigen lassen und über mein Programm dann ein paar Infos über die pdf-Datei herausfinden. Beispielsweise würde ich gerne die aktuell angezeigte Seitenzahl wissen oder ich hätte gern die Möglichkeit, direkt über mein Programm zu einer bestimmten Seite in der pdf zu springen.

Ist sowas möglich?

Vielen Dank für eure Hilfe,
Manuel

22.07.2008 - 20:28 Uhr

Das stimmt schon generell, aber zum einen ist XML meines Wissens nach langsamer, was jetzt natürlich lokal nicht so wichtig ist und zum anderen finde ich SQL rein von den Funktionen her wesentlich besser, denn ein JOIN über mehrere XML-Dateien dürfte ziemlich aufwändig sein. Die Grundlagen von XML funktionieren jedenfalls, aber ich möchte da noch wesentlich mehr entwickeln und da wäre SQL, wenns denn mal läuft, insgesamt einfacher. Daher wäre das schon genial, wenns irgendwie laufen würde, wobei ich halt den Aspekt "64 Bit" nicht bedacht habe.

22.07.2008 - 12:01 Uhr

Hat man bei Firebird denn auch das Problem mit 32 und 64 Bit? Denn wenn nicht, würde das ja definitiv für Firebird sprechen, da ich so bereits 2 Versionen meines Tools zur Verfügung stellen müsste.

Lg,
Manuel

22.07.2008 - 03:10 Uhr

Hi du!

Hast du dein Problem damals gelöst bekommen? Denn ich stehe mittlerweile vor dem gleichen Problem und bekomme es durch die verschiedensten Versuche und Events nicht weg.

Falls jemand einen Rat weiß, wie man das lösen könnte, dass das ContextMenu nur dann angezeigt wird, wenn ein Element angeklickt wird...

Danke,
Manuel

Edit: Kaum schreibe ich hier, bin ich auch schon auf eine sehr gute Lösung gestoßen, indem ich was rumprobiert habe. Ich hoffe es hilft vielleicht wem, der das Gleiche Problem hat:

Einfach der Listview beim MouseClick ein Event hinzufügen, welches dann folgendes macht:

ListViewItem lvItem = _lvMyFiles.GetItemAt(e.X, e.Y);
if (lvItem != null && e.Button == MouseButtons.Right)

Und wenn das Kontextmenü geschlossen wird (ebenfalls Event) das ContextMenuItem wieder aus dem ContextMenu entfernen.

Wichtig dabei: Testen ob die rechte Mousetaste gedrückt wurde, sonst ist das Problem das Gleiche wie vorher. 😉

22.07.2008 - 00:36 Uhr

Ja, das ist Vista 64 Bit. Aber ich verwende zum entwickeln auch Vista 64 Bit und da gehts. Habs auf 2 anderen Vista-Systemen getestet, beide aber 64 Bit und da gings nicht. Heißt ich brauche 2 DLLs? Werden diese dann automatisch nach OS gewählt oder was muss man da tun?

Dankeschön,
Manuel

21.07.2008 - 22:24 Uhr

Also bisher habe ich mehr Doku zu SQLite gefunden, daher werde ich das jetzt einfach mal verwenden. Es klappt auch schon ganz gut alles, nur nicht auf anderen Rechnern. Da schmiert das Programm dann sofort ab.

_Con.ConnectionString = "Data Source=" + System.Windows.Forms.Application.StartupPath + "\\database.s3db;Version=3";

So rufe ich das auf und die Datenbank liegt dann in meinem Debug-Ordner. Auf meinem Rechner klappt das ganz gut und alles wird richtig erkannt. Nur wenn ich den Debug-Ordner auf einen anderen Rechner kopiere klappts nicht und das Programm schmiert sofort ab. Die DLL-Datei von SQLite habe ich jedenfalls auch mit kopiert. Diese liegt auch im Debug-Ordner, heißt daran dürfte es dann eigentlich nicht liegen.

Liebe Grüße,
Manuel

Edit: Also unter XP geht es auf jedem Rechner. Nur unter Vista gehts nicht: "Das Programm funktioniert nicht mehr ...". Aber ich verwende ebenfalls Vista, doch da gehts. Nur auf allen anderen Vista-Systemen geht es nicht.

20.07.2008 - 15:51 Uhr

Klingt auf jeden Fall echt gut. Schaus mir auch gerade an. Nur gibts da nicht ne andere Möglichkeit, als die Datenbank und die Tabellen über DOS-Befehle zu erstellen? Ich meine so schlimm ist es jetzt auch nicht, nur für riesen Datenbanken ist mir das ehrlich gesagt insgesamt zu langsam vom "Workflow" her. Oder gibts da vielleicht wiederum Tool für, mit denen sich das einfacher machen lässt?

Dankeschön,
Manuel

20.07.2008 - 15:17 Uhr

Wunderbar, genau danach habe ich gesucht, nur scheinbar nach den falschen Schlagwörtern.

Dankeschön euch beiden!

Gibts da eigentlich eine von den beiden, die ihr eher empfehlen würdet? Also SQLite oder Firebird Embedded? Von Firebird habe ich bisher nur Positives gehört, vor allem was die Stabilität angeht und SQLite glaube ich ist von der Syntax näher am Standard oder irre ich mich da?

20.07.2008 - 14:34 Uhr

Sind diese Datenbanken denn portabel? Weil wenn ich diese vorher noch installieren müsste würde es natürlich für mich keinen Sinn machen. Ich persönlich kenne mich recht gut mit MySQL und PostgreSQL aus, daher wäre natürlich etwas Ähnliches total klasse. XML klappt jetzt wie gesagt auch, aber irgendwie habe ich das Gefühl, dass es nicht wirklich optimal ist, vor allem da ich nur schlecht beispielsweise an die Anzahl der Datensätze komme, was mit einem einfachen Query ja recht schnell möglich ist.

Danke schon mal für deine Antwort 🙂
Manuel

20.07.2008 - 13:22 Uhr

Hi zusammen!

Ich habe mir ein Tool geschrieben, mit dem ich Dateien runterladen kann. Zu jeder Datei lege ich bisher eine XML-Datei an, in der dann alle Informationen dazu gespeichert werden. Jetzt bin ich aber auf die Idee gekommen, dass dies mit einer Datenbank doch wesentlich effizienter wäre, da ich so jede XML-Datei öffnen und auslesen muss. Sicherlich ist dies durch XPath schon recht gut geworden, jedoch sind Datenbanken ja meist noch mächtiger was die Anfragen angeht.

Was denkt ihr darüber? Würdet ihr eine lokale Datenbank verwenden und was nimmt man da? Access? Weil man dort dann vollständig ungebunden von einer Datenbank-Software ist? Denn meines Wissens reicht es ja da, die Access-Datei mit zu "installieren" und schon kann der Nutzer diese Datenbank verwenden. Macht ICQ es nicht sogar auch so?

Danke für eure Meinungen,
Manuel

15.07.2008 - 13:07 Uhr

Danke für deine Antwort!

Hast du denn eine Ahnung ob sowas mein Programm langsamer macht? Ich hab irgendwie immer das Gefühl, als würde ich dann so unglaublich viel einbinden usw.
Da ich aus der Webprogrammierung komme, bin ich da halt andere Dinge "gewöhnt", eben dass ich alles genau so anpassen kann wie ich es haben will. Doch scheinbar muss ich mich von dem Gedanken ein wenig verabschieden g

Lg,
Manuel

15.07.2008 - 03:34 Uhr

Hallo zusammen!

Ich würde gerne eine Progressbar, als auch das TabControl grafisch anpassen. Bei der Progressbar würde ich dazu gerne noch Text auf ihr platzieren, was so mit einem Label nicht geht, da dieses dann keine Transparenz zu unterstützen scheint. Daher wäre mir auch ein einheitlicher Style für die Progressbar und ein Text darauf sehr recht.
Gleiches gilt fürs TabControl, wo ich gerne die Farbe und das MouseoverVerhalten bzw. den Style beim Mouseover verändern möchte.

Gefunden habe ich nun die folgenden Komponenten:
http://www.devexpress.com/Products/Free/WebRegistration60/

Eigentlich sehen sie ganz gut aus, also habe ich sie mir runtergeladen. Wenn ich den Style anpassen möchte, muss ich dort aber nun mit einem Skineditor einen kompletten Skin für alle Komponenten erstellen und diesen Skin dann als Assembly referenzieren. Irgendwie habe ich aber das Gefühl, als wäre das die Kanone und der Spatz, da ich ja lediglich nur ein paar grafische Änderungen haben möchte und ich bei solchen großen Komponenten immer die Befürchtung habe, dass sie mein Programm von der Geschwindigkeit her langsamer machen, da viele Dinge verwendet werden, die ich überhaupt nicht brauche.

Habt ihr damit schon Erfahrungen gemacht oder wie würdet ihr meine Situation handhaben? Leider sind meine Erfahrungen in dem Bereich noch recht jung, daher wende ich mich mit dieser Frage an euch.

Vielen Dank für eure Tipps, Meinungen oder Lösungen/Vorschlägen zur Änderung der Styles.

Manuel

05.06.2008 - 11:25 Uhr

Ja, ich verwende Vista. Scheinbar ist das aber auch unter XP ein Problem. Könnte ich gleich aber auch mal kurz testen.

Die GUI aktualisiere ich einfach bei jedem Aufruf des Events. Wie oft das vorkommt weiss ich nicht, aber ich denke das ist von der Größe des Downloads abhängig. Aber selbst wenn ich beim DownloadFileCompleted-Event den Wert der ProgressBar auf 100 setze, ist die GUI langsamer als dass die ProgressBar gelöscht wird. Daher werde ich es wahrscheinlich einfach so machen, dass die Leisten einfach sichtbar bleiben bis der Nutzer sie selbst wegklickt. Dann bestände das Problem auch nicht. 🙂

Dankeschön für eure Hilfe,
Manuel

04.06.2008 - 11:34 Uhr

Danke für die Antworten ihr beiden.

Also ich habe pro Download dann auch eine Progressbar, die angelegt wird und die ich mir dann als Membervar in der Filedownload-Klasse merke. Somit hat jeder Download einen Fortschritt und wenn dieser fertig ist wird dessen Progressbar einfach wieder ausgeblendet.

Ich habe den Wert auch mal ausgegeben, wenn er genau 100 ist, heißt if-Abfrage und getestet wann e.ProgressPercentage == 100 und das als MessageBox ausgeben lassen. Die Box erscheint aber ebenfalls bevor die Progressbar voll ist.

Kann es sein, dass das einfach zu schnell ist? Denn bei eine 3MB Datei kommt er bis 3/4, bei 98kb nur bis 10%. Klar, ich könnte jetzt einfach hingehen und den Wert beim Complete-Event auf 100% setzen, aber wirklich schön finde ich diese Lösung nicht.

Vielen Dank für eure Hilfe,
Manuel

Edit: Wenn ich beim Complete-Event einfach mal nichts mache läuft der Statusbalken brav voll und schaut auch gut aus. Ist vielleicht einfach die Übergabe an die GUI zu langsam? Nur wie sollte ich dann vorgehen?

04.06.2008 - 03:11 Uhr

Hey zusammen!

Ich hätte da mal eine Frage. Und zwar habe ich mir eine Downloadklasse geschrieben, wobei pro Download ein eigener Thread ein Objekt dieser Klasse erzeugt und den Download somit startet.

Beim folgenden Code werden bekannterweise die Eventhandler angelegt.

WebClient client = new WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChanged);

Ich mache nun folgendes:

        private void DownloadProgressChanged(Object sender, DownloadProgressChangedEventArgs e)
        {
            _ProgressBarValue = e.ProgressPercentage;
            updateProgressBarDelegate d = updateProgressBar;
            _PbarDownloadItem.Invoke(d);
        }


        private void DownloadFileCompleted(Object sender, AsyncCompletedEventArgs e)
        {
            
            disposeDownloadDelegate d = disposePanelDownloadItem;
            _PanelDownloadItem.Invoke(d);
        }

        private void updateProgressBar()
        {
            _PbarDownloadItem.Value = _ProgressBarValue;
        }

        private void disposePanelDownloadItem()
        {
            _PanelDownloadItem.Dispose();
        }

Und zwar kann ich aufgrund der Threads nicht auf meine Progressbar zugreifen. Verständlich und über Delegates soweit gelöst.
Jetzt habe ich aber das Problem, dass der Download bei 100% ist, die Progressbar aber immer erst bei der Hälfe - 3/4 der Anzeige. Könnte das durch die Threads kommen? Oder mache ich vom Denken her einen Fehler und bin vielleicht viel zu umständlich an die Sache rangegangen?

Zur Erläuterung: Die Progressbar liegt auf einem Panel. Dieses wird beim beenden des Downloads einfach gelöscht, so dass die Progressbar usw. wieder verschwindet. Doch momentan verschwindet sie noch viel zu früh bzw. ich habe mir über die Messagebox mal ausgeben lassen wann die 100% erreicht sind und das passte definitiv nicht zu dem, was die Progressbar anzeigt.

Vielen Dank für eure Hilfe,
Manuel

18.05.2008 - 14:21 Uhr

Tut mir leid, ich bin noch nicht so erfahren auf diesem Gebiet, als dass ich das direkt so verstanden hatte.

Richtig ist demnach die Verwendung von Folgendem denke ich mal:

this.Invoke (new MethodInvoker (DoCheapGuiAccess));

Heißt ich rufe von meinem sekundären Thread einfach eine Methode auf, die dann von meinem primären GUI-Thread ausgeführt wird.

Ein kleines Verständnisproblem habe ich aber noch. Wenn ich jetzt beispielsweise aus meinem 2ten Thread einen 3ten Thread starte, wohin wird dann mit Invoke mein Wert zurück gegeben? An den 1.? Oder an den 2., der den 3. Thread gestartet hat?

Und was würde man machen, wenn man beispielsweise mehrere Downloads starten wollen würde. Nimmt man dann für jeden Download, der aus dem Programm raus gestartet wird einen eigenen Thread oder reicht einer dafür aus, da dieser die GUI quasi entlastet und somit dort weitere Aktionen möglich sind, was ja das Hauptanliegen ist.

Ich danke euch vielmals für die kompetente Hilfe,
Manuel