Laden...

Forenbeiträge von nba Ingesamt 24 Beiträge

20.04.2005 - 13:36 Uhr

Hi,
ist ein netter Ansatz, ich werde mal etwas rumspielen und schauen ob ich das in mein
Programm nachträglich noch integrieren kann.
Allerdings wird entscheidend sein wie sich die Geschwindiggkeit verhält.

19.04.2005 - 19:33 Uhr

Hi,

ich suche ein Möglichkeit, eine Änderung in einer geg. Anzahl von Controlls
festzustellen. Zb mehrere Editboxen, comboboxen etc in einem Formular,
ohne bei jedem Control OnChange, OnKeyPress OnWhatever ... auszuwerten.

Weiter wäre es schön, wenn folgendes möglich wäre:
Wenn Element 1 in einer Combobox gewählt war, dann Element 2 gewählt
wurde, dann wieder Element 1, sollte das Control als nicht geändert gelten.

Gruß

16.03.2005 - 10:26 Uhr

Hi,
sehr praktischer Ansatz, allerdings gibt es folgende Meldung:

C:\Programme\Microsoft.NET\SDK\v2.0\Bin>TlbImp c:\windows\system32\shdocvw.dll /
out:c:\Interop.Shdocvw.dll

Microsoft (R) .NET Framework Type Library to Assembly Converter 2.0.40607.16
Copyright (C) Microsoft Corporation. All rights reserved.

TlbImp error: Error occurred while opening type library:
System.ArgumentException: Value does not fall within the expected range.
at TlbImpCode.TlbImpCode.LoadTypeLibEx(String strTypeLibName,
REGKIND regKind, ITypeLib& TypeLib) at TlbImpCode.TlbImpCode.Run(TlbImpOptions options)

Is schon klar was er will, allerdings hat man da ja kein Einfluss drauf.

Hat Jemand eine Idee.

07.03.2005 - 17:18 Uhr

Hi,
ich gluabe nicht, so wie ich das sehe kann ich da Daten binär schreiben,
pack() fasst Daten zusammen und wandelt Sie um.
Sonst bitte ich um ein kurzes Beispiel, wie ich den BinryWriter gebrauchen kann.

Gruß

07.03.2005 - 16:59 Uhr

Hallo,
ich übersetze zZ ein älteres Perlscritp in eine C# Klasse und scheitere an der
wunderbaren Funktion pack()

Es handelt sich nur noch um eine einzelne Zeile:

my $binary = pack("V20", @data);

Kurze Erklärung:
Das Array data enthält genau 20 Werte vom Type ulong,
deshalb die Angabe V20 ( V : Ein long-Wert in »VAX«-Reihenfolge (little-endian). (Diese »shorts« und »longs« sind genau 16 Bit bzw. 32 Bit groß). )

Was entsteht ist ein binärer String der in binary abgelegt wird.

Frage, gibt es eine equivalente C# funktion oder weis jemand, wie pack() intern funktioniert?

07.03.2005 - 12:26 Uhr

Hi,
lieder kann ich das auch nicht wissen.
Allerdings kann ich nur jedem dringenst empfehlen eine andere IDE zu benutzen,
da #dev mehr als nur buggy ist. Die Storys, was mir das Ding alles zerstört hat würden Bände füllen.
Die Beta von MS VS 2005 kannst du kostenlos ruterladen und ausgiebig testen.

04.03.2005 - 12:58 Uhr

Hallo

string name = (sender as ComboBox).Name;

sollte es tun.

04.03.2005 - 12:05 Uhr

Hallo,

ich benutze zZ erfolgreich Visual Studio c# 2005 Express Beta
leider scheint es noch keine Vorlage fuer Windows-Steuerelementbibliotheken zu geben,
jedenfalls wird bei File->New->Project nur

WindowsApplication, ClassLibrary, ConsoleApplication, Empty Project, Screen Saver

angezeigt.

Hat jemand eine Vorlage die man nutzen kann oder weiß wo ich eine bekomme?
Auf den Seiten von MS konnte ich dazu leider nichts finden.

03.03.2005 - 15:13 Uhr

Hi,
ja, bitte nächstes mal in rot schreiben.


Test.Properties.Resources.CHECK_BAR_32px;

CHECK-BAR_32px**.ico** ist der Dateiname

die Resource nennt sich bei mir CHECK_BAR_32px

Es funktioniert so wunderbar.

03.03.2005 - 13:32 Uhr

Hi,
NAMESPACE ist ein PLatzhalten, da musst du deinen Namespace einfügen.

03.03.2005 - 12:40 Uhr

Hi,
geht mir auch manchmal 🙂
Ich überlege dann immer, wie war das nochmal auf der Windowas api ...
dann kommt vieles.

Allerdings kannst du nicht alle Prozesse killen, es komtm darauf an,
wer Sie mit welchen Attributen erstellt hat. Bei Outlook sollte das kein
Problem sein, aber Systemprozesse oder Services kann man nicht immer so beenden.

03.03.2005 - 12:18 Uhr

Hallo,
du kannst die Grafiken als Resourcen hinzufügen, dann werden Sie in das Programm einkompiliert.

Dann kannst du mit

NAMESPACE.Properties.Resources.RESOURCENAME;

darauf zugreifen.

03.03.2005 - 12:12 Uhr

Hi,

p.Kill();

sollte helfen.

03.03.2005 - 11:57 Uhr

Hallo,

das sollte helfen



string s = "abRest";
                
s = s.Substring (2, s.Length - 2);


danach hast du in s nur noch Rest stehen.

02.03.2005 - 16:48 Uhr

Danke dir, das hatte ich tatsächlich schon mal gemacht aber verdrängt.

🙂

02.03.2005 - 16:37 Uhr

Hallo, simple Frage,
wie kann ich einen String über mehrere Zeieln verteilen ohne immer
mit "" und + zu arbeiten.
Gerade bei langen, verschachtelten SQL-Statements wäre das sehr nützlich.

Schön wäre wie in div. Sprachen z.B.:


string sql_mask = "
SELECT
 t1.a AS a, t2.b AS b
FROM
 t1, t2
WHERE
 a.id=b.nref
AND
 a.id NOT IN ( SELECT p_id FROM t3 WHERE n > {0} )
";

sql = String.Format( sql_mask, limit );


Danke fuer eine simple Loesung.

28.02.2005 - 17:26 Uhr

Hallo Herbivore,
danke fuer deine rasche Antwort.

Im Q&D Test nützte es leider nichts, ich werde es morgen nochmal eingehender testen.
Probleme macht nur die Höhe der ComboBOx, die Breite passt sich wunderbar an.
Deshalb die Idee, einfach die Zeilenhöhe des Eltern-Controls ( Listview ) zu vergrössern.

Weitere Vorschläge sind willkommen.

28.02.2005 - 17:07 Uhr

Hallo,
ich benutze eine Ableitungs von ListView ( ListViewEx von irgend jemadem ) mitleichten Änderungen, so dass es möglich ist,
zB ComboBoxes in das ListView einzufügen.
Das funktioniert auch alles wunderbar.
Allerdings überlagern die ComboBoxen die ListView Zeilen etwas, was
sehr unschön aussieht.
Da sich die Höhe einer ComboBox sich wie es scheint nicht ohne weiteres
unter 21 Pixel verkleinern läßt, wäre es schön, wenn man die Höhe der Zeilen
des ListViews auf 21 Pixel setzen könnte und das möglichst simpel.

In der Klasse ListViewEx wird das Event WM_PAINT wie folgt behandelt:


protected override void WndProc(ref Message m)
		{
			switch (m.Msg)
			{
				case WM_PAINT:
					if (View != View.Details)
						break;

					// Calculate the position of all embedded controls
					foreach (EmbeddedControl ec in _embeddedControls)
					{
						Rectangle rc = this.GetSubItemBounds(ec.Item, ec.Column);

						if ((this.HeaderStyle != ColumnHeaderStyle.None) &&
							(rc.Top<this.Font.Height)) // Control overlaps ColumnHeader
						{
							ec.Control.Visible = false;
							continue;
						}
						else
						{
							ec.Control.Visible = true;
						}

						switch (ec.Dock)
						{
							case DockStyle.Fill:
								break;
							case DockStyle.Top:
								rc.Height = ec.Control.Height;
								break;
							case DockStyle.Left:
								rc.Width = ec.Control.Width;
								break;
							case DockStyle.Bottom:
								rc.Offset(0, rc.Height-ec.Control.Height);
								rc.Height = ec.Control.Height;
								break;
							case DockStyle.Right:
								rc.Offset(rc.Width-ec.Control.Width, 0);
								rc.Width = ec.Control.Width;
								break;
							case DockStyle.None:
								rc.Size = ec.Control.Size;
								break;
						}

						// Set embedded control's bounds
						ec.Control.Bounds = rc;
					}
					break;
			}
			base.WndProc (ref m);
		}

kann man dort eventl. ansetzen?

Anregungen sind willkommen.

23.02.2005 - 12:43 Uhr

Hi,
habe das ganze nochmal geändert in den Vorschlag von VizOne


if(sender is Control)
{
        (sender as Control).Focus();
}

den C/c++ Typecast gewöhne ich mir gerne ab, die extra Zeile f. d. Klammer
muß aber sein 😉

Danke euch

23.02.2005 - 11:24 Uhr

Hi VizOne,
könntest du dir eine Sekunde Zeit nehmen und die Vorteile, gerne auch Performance
o.Ä. von


Control c = sender as Control;
if(c != null) {
  c.Focus();
}

bzw.


if(sender is Control)
{
        ((Control)sender).Focus();
}

nennen ?

23.02.2005 - 11:11 Uhr

Hi,
ist nicht wirklich ein Problem.

Bei der Methode handelt es sich um eine globale Fehlerbehandlung für eine
Application.
Wird ein Fehler von einem (Control) ausgelöst, so möchte ich das
Control Fokusieren, wird der Fehler nicht von einem (Control) ausgelöst, reicht
die Meldung, eine Fokusierung ist nicht möglich.

23.02.2005 - 11:01 Uhr

Hallo,
danke für die weiteren Antworten bis auf den ROFL, der offensichtlich nicht verstanden
hat wozu ein Forum gut ist. Ein Codeansatz zu seinerm Kommentar wäre sinnvoll
oder er sollte genaueres fragen.

Weiter,

sender.Focus();

ist wie richtig bemerkt nicht kompilierbar,
war wohl etwas spät gestern.

Der Code ist mit den neuen Hinweisen ist nun wie folgt und kompiliert wunderbar.

if(sender is Control)
{
        ((Control)sender).Focus();
}

Danke.

22.02.2005 - 19:41 Uhr

Hallo,
euch allen Danke für die raschen Antworten.
Ich habe den Vorschlag von Pulpapex kurz implementiert und es funktioniert
ausgezeichnet. Die anderen Vorschläge werde ich morgen mal testen um zu
sehen ob es noch etwas eleganter geht.

Der Code sieht zZ so aus:


if (sender.Equals(null))
{
    return;
}

try
{
    if (!sender.GetType().GetMethod("Focus").Equals(null))
    {
        sender.Focus();
    }
}
catch (Exception ex)
{
    ///
}
 
22.02.2005 - 19:17 Uhr

Hallo,
ich möchte bei einem Object vom Type "object" feststellen, on die Methode
Focus(); implementiert ist. Zur Laufzeit natürlich.

Beispiel:


 public void MyFunction(object sender, string message)
 {
   /// tue irgendwas

   if (sender.Equals(null))
   {
     return;
   }

   if ("Focus(); ist implemetiert")
   {
     sender.Focus();
   }
 }
 

Möglich wäre über GetType(); den Type zu erfragen und eine Liste mit Typen
vorzuhalten. Das ist aber sehr unelegant.

Hat jemand eine Idee?

Gruß nba