Laden...
Avatar #avatar-1806.jpg
Floyd myCSharp.de - Member
Programmierer Leipzig / Deutschland Dabei seit 13.01.2006 85 Beiträge
Benutzerbeschreibung

Forenbeiträge von Floyd Ingesamt 85 Beiträge

01.06.2006 - 10:11 Uhr

Ich würd mich freuen wenn einer den richtigen C# Code zur Verwendung posten könnte so das ich dadurch auch ein bissel C# lernen und die nächsten Klassen gleich mit der C# verwendung beschreiben kann.

01.06.2006 - 10:08 Uhr

Im Artikel Eigene Eventlogs schreiben habe ich beschrieben wie man die System-Eventlogs um eine Gruppe erweitert und anschließend in diese schreiben kann.

Um dies zu vereinfachen hab ich eine neue Klasse "EventLogWriter" meiner Klassensammlung hinzugefügt. Diese Klasse stell ich euch als Download zur Verfügung.

Als erstes etwas zur Verwendung der Klasse.
Ausgegangen bin ich von einem Formular "Form1" welches beim starten über zwei verschiedene Methoden einen Eintrag ins Eventlog schreibt.

Zuerst muss man sich natürlich die DLL downloaden und im Projekt referenzieren.

'Anschließend den Namespace Importieren
Imports Freakfabrik.Functions.System.Eventlogs
Public Class Form1
    Private Sub Form1_Load(ByVal sender As Object, _
      ByVal e As System.EventArgs) _
      Handles Me.Load

        'Methode Nr.1
        Dim objEventLogWriter As New EventlogWriter()
        objEventLogWriter.ApplicationName = "MeineTestanwendung"
        objEventLogWriter.EventLogName = "MeinEventlog"
        objEventLogWriter.WriteToEventLog(
            "Hier ein Beispieleintrag ins Log.", _
            EventLogEntryType.SuccessAudit)

        'Mehtode Nr.2
        Dim objEventLogWriter2 As New EventlogWriter( _
            "MeinEventlog", "Testanwendung")
        objEventLogWriter.WriteToEventLog( _
            "Hier ein zweiter Beispieleintrag ins Log.", _
            EventLogEntryType.SuccessAudit)

    End Sub
End Class

Beide Methoden füren zum selben Ziel.
Es wir eine neue Gruppe "MeinEventLog" zusätzlich zu den bereits vorhanden System-Eventlogs hinzugefügt (nur wenn es sie noch nicht gegeben hat). Anschließend werden jeweils ein Eintrag in diese neue Gruppe hinzugefügt.

Wichtig ist nur zu beachten das auf den folgenden Registryzweig Lesen bzw. Schreibrechte bestehen. Die läßt sich erreichen in dem Administrator- oder Hauptbenutzer-Rechte bestehen, oder die Rechte explizit gesetzt werden.

HKLM\System\CurrentControlSet\Services\EventLog

Weiter Informationen und den Download der Klasse gibt es hier: blog.freakfabrik.net - Klasse EventlogWriter

01.06.2006 - 10:04 Uhr

Microsoft verwendet in seinen Office-Produkten zur Beschreibung von Farben ein eigenes System. Insgesammt gibt es 58 Farben (wobei schwarz und weiß doppelt vorkommen). Jede dieser Farbe wird über einen eigenen Index angesprochen - den so genannten ColorIndex.

Das Problem dabei ist das dieser Color-Index nicht ohne eine Mapping-Tabelle in RGB oder in HTML-Farben (z.B: #FF00FF) umgewandelt werden kann. Zwar bietet Microsoft auch noch die Möglichkeit den Color-Wert der Spalte auszulesen doch dieser läßt sich eben so "bescheiden" in eine der beiden Formen umwandeln.

Was passiert im Hintergurnd?

Nun es wird beim Inizialisieren der Klasse eine Mapping-Tabelle angelegt. Mit der lassen sich die ColorIndex auf das unter HTML übliche Format #?????? mappen. Um nicht nocheine Mapping-Tabelle für die RGB-Farbwerte anlegen zu müssen werden die Farbwerte aus dem HTML-Format in RGB-Farben umgerechnet.

Das ist nicht weiter schwirig da die HTML-Farbwerte aus 3 Segmenten bestehen - #RRGGBB wobei RR für Rot, GG für Grün und BB für Blau stehen. Jede dieser 3 Segmente stellt eine hexadezimale Zahl dar. Diese in eine in einen RGB-Farbwert umzuwandeln ist nun nicht weiter schwierig.

Zur Verwendung:

Einfach den Namespace importieren und eine neue Instanz der Klasse "ColorIndexToRGBColor" anlegen. Wärend diese neue Instanz angelegt wird, wird die Mappingtabellen aufgebaut und kann sofort verwendet werden.

Nun einfach nur die passende Funktion aufrufen. Entweder "getHTMLColor" oder "getRGBColor". Je nachdem was man haben möchte.

Hier ein Codebeispiel:

Imports Freakfabrik.MSOffice.Drawing
[...]
     Dim objColorConverter as new ColorIndexToRGBColor
     Console.WriteLine(objColorConverter.getHTMLColor(10))
[...]

weiter Informationen und den Download gibt es hier: blog.freakfabrik.net - Klasse ColorIndexToRGBColor

08.02.2006 - 09:36 Uhr

ah cool, danke, hab #d zwar bei mir installiert (probeweise) aber die funktion kannte ich net, geschweigeden das #d sharpdevelop heist.

gruß floyd

06.02.2006 - 16:26 Uhr

Zum Punkt 1, das problem ist das es keine assymblies sind, es ist ein themplate für eine modufikation von Winforms.

zum punkt 2, was ist #d. kann bei google auf die schnelle nix dazu finden.

gruß floyd

06.02.2006 - 15:02 Uhr

Hi Leute,

nehmts mir bitte nicht übel. ich find c# garnet übel nur hab ich im moment keine zeit mein gesammtes projekt auf c# umzustellen. von daher such ich eine c# to Vb.net konverter der gleich ein ganz projekt und nicht nur einzele quellcodestückchen convertieren kann.
hab etwas quellcode aus netz den ich in meiner vb.net anwendung verwenden will, wäre cool wenn ihr mir helfen könntet.

hier der quellcode den ich übersetzten will
http://projectdistributor.net/GetFile.aspx?type=s&id=310&codewise=False

gruß floyd

03.02.2006 - 11:22 Uhr

Original von imagodespira
... der Style ist ein Vista nachbau, hab selbst auch mal versucht einen zu machen graphisch nicht das Problem, nur die Umsetzung dass es dann alles auch funktioniert ist schwierig (habe Stylebuilder mal probiert...) ..

ich wollt den style direkt in meine application einbauen. nur mit der titelleiste hab ich so meine probleme.

gruß floyd

03.02.2006 - 10:52 Uhr

hmm schade, hatte gehoft du es es selber gemacht 😠

Gruß Floyd

03.02.2006 - 09:29 Uhr

ne frage, hast du die titelleiste selber gebaut oder ist das ein fertiger windows/system-sytle?

gruß floyd

01.02.2006 - 14:27 Uhr

Original von Noodles
Ich bezeichne jede Zelle als Item, also meinte ich damit auch die SubItems.

Kann aber nicht jeder wissen oder???
Zumals Subitems nicht Items sind und sich daraus nicht erschließen läßt was du meinst.

01.02.2006 - 14:18 Uhr

Original von Noodles
Du musst es für jedes Item angeben.

Ne für jedes Subitem des Items wenn ich das Problem richtig verstanden habe.

01.02.2006 - 13:59 Uhr

ahhh, ja sorry hab nix verstanden muss ich aber auch net 😉 muss halt auch noch viel lernen 🙁

bye

01.02.2006 - 10:53 Uhr

dann trag doch als sender den MatchFinder ein. dann bescheist du ihn auch nicht 😉

Gruß Floyd

31.01.2006 - 19:25 Uhr

Der Abstand in Pixel würd sich doch mit dem Satz des Pytagoras berechnen lassen.
Dabei muss man unterscheiden welchen abstand man haben möchte: horizontal, vertikal oder diagonal.

Das sollte kein all zu großes mathematisches Problem darstellen.

Ist jetzt nur so ne Idee, korrigiert mich wenn ich falsch liegen.

Gruß Floyd

31.01.2006 - 16:19 Uhr

oky danke, habs hinbekommen. das tablelayout hat nur noch einen Bug

wenn man den CellBorder auf None stellt wird ein Vertikaler Scroller hinzugefügt, sobald man ihn auf singel oder etwas anderes stellt verschwindet er. nunja was solls. damit kann ich auch leben 😉

30.01.2006 - 20:36 Uhr

Original von herbivore
Hallo herbivore,

du schriebst:

aber autoscroll oder scrollable gibt es nicht.
Dem habe ich widersprochen und aufgezeigt, wo es zu finden ist.

herbivore

das ist mir schon klar, leider versteh ich net wie ich das umsetzten soll

30.01.2006 - 20:30 Uhr

Original von herbivore
Hallo Floyd,

klar hat TableLayoutPanel die Eigenschaft Autoscroll.

Inheritance Hierarchy
System.Windows.Forms.Control
...System.Windows.Forms.ScrollableControl <- definiert Autoscroll
......System.Windows.Forms.Panel
.........System.Windows.Forms.TableLayoutPanel

tut mir leid, vieleicht bin ja blöde aber ich weiß net worauf du hinaus willst. 🙁

30.01.2006 - 15:57 Uhr

oky hab ich rausgefunden, muss nur rowscount um 1 erhöhen, wie bekomm ich jetzt zu der neuen zeile mein control rein?

gruß floyd

edit: oky dumm von mir, bin doch selber drauf gekommen.

TableLayoutPanel1.Controls.Add(..)

aber autoscroll oder scrollable gibt es nicht.

30.01.2006 - 15:53 Uhr

Original von kakaomilch
neue zeilen geht

scrollable auch

und wie? 😁 sorry finde aber rows nicht in der list der eigenschaften.

gruß floyd

30.01.2006 - 15:20 Uhr

Original von kakaomilch
Nur eine Idee:
Schaut nicht so listboxartig aus.. aber mit TableLayout kannst du auch 2 spalten und 2 zeilen machen..

Die idee ist zwar nicht schlecht nun meine Fragen:

  1. Kann ich zur aufzeit neue Zeilen hinzufügen?
  2. Bekomm ich an die Tabell ne Scrollbar dran?

Das ganze soll wie ne Listbox aussehen in der ich X beliebige Usercontrols speichern kann, von mir aus auch nur einspaltig.

Gruß Floyd

30.01.2006 - 14:44 Uhr

Schön das ihr meinen Beitrag lehst aber ne idee hat wohl bisher keiner?

Gruß Floyd

30.01.2006 - 10:08 Uhr

Hallo,

ich hab ein Usercontrol welches ich in einer Listboxähnlichen struktur darstellen will.

Das ganze so so aussehen:

Zweispaltige Listbox die eine belibige Anzahl an Usercontrols beinhalten kann.

Hat jemand ne idee wie ich sowas programmieren muss?
Ich glaube nicht das das mit der Standardlistbox geht oder?

Gruß Floyd

26.01.2006 - 09:35 Uhr

_Original von Pako_Der MouseUp Event wird nur im Form und nicht in der Titelleiste ausgelöst.

Hmm das könnte sein. Das wäre die überlegung das mit der API zu machen und dort auf das mouseup-event zu warten. ist aber ne unschöne lösung.

26.01.2006 - 08:40 Uhr

hmm, es gibt auch noch einen einfacheren weg ohne timer, prüfe einfach mit dem MouseDown in verbindung mit LocationChange ob sich das Formular bewegt. Und sobald MouseUp eintritt kannst du die Tranparenz wieder aufheben.

Gruß Floyd

18.01.2006 - 12:03 Uhr

Wenn du auf Bestellen klickst findest du dort ne ComboBox wo du auch .Net auswählen kannst.

Gruß Floyd

18.01.2006 - 10:24 Uhr

meißt hilft es wenn man ein Refresh macht.

also

public void addcol(string s, int w)
{
    listView1.Columns.Add(s, w);
    listView1.refresh();
    MessageBox.Show("Ich werde benutzt!");
} 
17.01.2006 - 09:27 Uhr

Hmm mag ja sein aber was spricht dagegen? Nur so aus neugier.

Gruß Floyd

17.01.2006 - 08:42 Uhr

Hier mal der code wie ich es in VB.Net machen. Müßt ihr halt nur noch übersetzten:


Public Shared instForm2 as Form2

Public Sub New()
   instForm2 = Me
End Sub

und wenn ich jetzt von Form1 auf funktionen oder objekte von Form2 zgreifen will geht das sehr einfach


Form2.instForm2.Objekt.Eigenschaft = Wert

sollte nicht schwer in C# zu übersetzten sein.

gruß floyd

16.01.2006 - 13:15 Uhr

Was hällst du von der Idee nen Listview zu verwenden?

Gruß Floyd

14.01.2006 - 22:51 Uhr

a cool 😁 und wie bekomm ich jetzt darein noch ein event ? sowas wie das X

14.01.2006 - 21:34 Uhr

hi SimonKnight6600,

exakt das hab ich gemacht. Nur gibt es damit folgende probleme:

  1. Wenn ich das Controll auf ein MDI-Form ziehe wird es in den Container und nicht ins Form gezeichnet.
  2. Egel wie ich das Control auf dem Form platziere, es legt sich immer unterhalb des menü-controls oder des toolbarcontrols und ich bekomme es einfach nicht hoch.

also wäre ansatz 1.: ich finde ne lösung für diese beiden probleme
und ansatz 2.: ich zeichne die titelleiste selber

nur hab ich für beide ansätze keinen lösungsweg 🙁

Gruß Floyd

14.01.2006 - 18:45 Uhr

hmm anscheinend nicht. wäre es denn möglich das MDI-System nachzubauen? und die titelleiste unterhalb meines controls zu bekommen?

Gruß Floyd

14.01.2006 - 10:42 Uhr

hmm oky, hat jemand zufällig ein beispiel wie das funktionieren soll?

hab zwar das hier gefunden : http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformscontrolclasswndproctopic.asp
aber ich kann leider kein Japanisch 😉

vorallem, wie zeichne ich dann die titelleiste neu und zwar mit bild und events? zum beispiel X um das event Form.Close auszuführen.

Gruß Floyd

13.01.2006 - 21:19 Uhr

hmm gehts nicht auch ohne api? ich will das projekt später auf mono portieren damit es auch unter linux lauft.

gruß floyd

13.01.2006 - 11:23 Uhr

Hi, ich hab ein Problem 😁

Und zwar hab ich ein problem mit dem aussehen von einem Fenster.

Die Titelleiste passt nicht zu meinem Design. Jetzt ist die frage ob und wie ich die titelleiste selbe zeichenen kann?!

Ich hatte mit für den kram einfach ein control geschrieben was genaus aussieht wie ich es brauche und dann halt die titelleiste auf dem formular ausgeblendet und mein control ganz oben hingelegt.

das problem ist jetzt folgende probleme:

  1. bei einem MDI-Formular gehts das nicht, das control wird dann in den MDI-Bereich gezeichnet und ich bekomm es dort nicht raus
  2. sobald ich ein Menu-Strip oder ein Toolstrip auf das formular ziehe ist diese noch oberhalb von meinem control platziert und ich bekomm es wieder nicht drunter 🙁

das ganze soll im prinzip so aussehen:

jetzt will ich ne MDI-Anwendung darum bauen die ein Menü hat, eine Toolbar. Das ganze soll aber layouttechnisch so aussehen wie oben?

gibt es ne lösung für mein problem? wenn ja welche.

ich selber hab 2 Lösungsansätze für das Problem aber keinen kann ich umsetzten weil ich net weiß wie 🙁

der erste Lösungansatz wäre das ich die Titelleiste selber zeichne
der zweite wäre das ich mein Control über die Menüleiste bekommen was aber vorraussetzt das es nicht in den MDI-Contrainer gezeichnet wird 🙁

gruß floyd